powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Драйвер ODBC VFP возвращает: Operator/operand type mismatch
54 сообщений из 54, показаны все 3 страниц
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33548568
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в предложении WHERE
как дату задать в условие выборки?

SELECT
JOURN.DOCNO AS DOCNUM,
JOURN.DATE AS DOCDATE,
KINDS.sp252 AS KIND,
OWNERAGENTS.DESCR AS OWNERAGENT,
AGENTS.DESCR AS AGENT
FROM
1SJOURN AS JOURN
INNER JOIN
sc204 AS KINDS ON KINDS.ID = sp200
LEFT JOIN
sc14 AS OWNERAGENTS ON OWNERAGENTS.ID = sp286
LEFT JOIN
sc14 AS AGENTS ON AGENTS.ID = sp303
WHERE
JOURN.DATE BETWEEN '16.02.2006' AND '16.02.2006'
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33548586
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если речь идёт о доступе к DBF и тип поля Date, то

Код: plaintext
JOURN.DATE BETWEEN { 16 . 02 . 2006 } AND { 16 . 02 . 2006 }
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33548620
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПасибо. ошибок не выдает, но выборка пустая.:(
да. DATE - поле в дбф. тип - дата.
без условия - выборка заполнена. значения даты за февраль. с условием
WHERE
JOURN.DATE BETWEEN {01.02.2006} AND {28.02.2006}
выборка пустая.

сам дбф смотрю дбф фьювером про
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33548793
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так уберите сначала Ваши INNER/LEFT и запустите

Код: plaintext
SELECT * FROM 1SJOURN AS JOURN WHERE JOURN.DATE BETWEEN { 1 . 02 . 2006 } AND { 28 . 02 . 2006 }
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33548982
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
первое что сделал - упростил запрос до:
SELECT
JOURN.DATE AS DOCDATE
FROM
1SJOURN AS JOURN
WHERE
JOURN.DATE BETWEEN {01.02.2006} AND {28.02.2006}

результата не дало.
прошу прощения, но я тут вообще в тупике. грешу на формат даты. к сожалению не знаю как проверить. запрос строю не в фокспе (да и вообще с фоксом незнаком) потому туплю.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549046
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если версия FoxPro 6 или выше, то универсальный формат даты это

{^YYYY.MM.DD}

В качестве разделителя можно указывать символ точки, дефис или наклонную черту. Без разницы. Обрати внимание на символ "^" сразу после фигурной скобки. В младших версиях FoxPro не использовался. Это как раз и является признаком универсального формата даты FoxPro.

Если версия FoxPro младше 6, то следует предварительно сделать настройку формата даты

SET DATE TO GERMAN

Это соответствует настройке вида

{DD.MM.YYYY}

По умолчанию, в FoxPro использовался английский формат даты, т.е.

{MM.DD.YYYY}
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549047
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 firerer
А почему дату пишешь через ".", а не через "/"?
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549074
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну форматы даты устанавливаются след. образом:
set date american -мм/дд/гг
set date ansi -гг.мм.дд
set date british/french -дд/мм/гг
set date german -дд.мм.гг
set date italian -дд-мм-гг
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549192
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Застрелите меня:
SELECT
JOURN.DATE AS DOCDATE
FROM
1SJOURN AS JOURN
WHERE
JOURN.DATE BETWEEN {01/02/2006} AND {28/02/2006}

не прошел,
этот вариант тоже:

SET DATE TO GERMAN
SELECT
JOURN.DATE AS DOCDATE
FROM
1SJOURN AS JOURN
WHERE
JOURN.DATE BETWEEN {01.02.2006} AND {28.02.2006}

знчек ^ тож не спасает
2Недоходящий. ниразу невкурсе что в фоксе разделителем в дате является /
2ВладимирМ версия ODBC - 6.1.8629.1
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549213
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробуем по рабоче-крестьянски через ф-ию и текущую дату.

Код: plaintext
1.
2.
3.
4.
5.
SELECT
JOURN.DATE AS DOCDATE
FROM 
1SJOURN AS JOURN
WHERE
BETWEEN(JOURN.DATE, DATE() -  15 , DATE())
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549226
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
SELECT JOURN.DATE AS DOCDATE FROM 1SJOURN AS JOURN;
WHERE JOURN.DATE BETWEEN {^ 2006 - 02 - 01 } AND {^ 2006 - 02 - 28 }
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549234
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вдогонку: и никакие SET DATE не нужны.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549350
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2PaulWist с функцией работает
2Sergey Sizov спасибо огромное. работает. но терь в поле DOCNUM кодировка непонятная. вместо "Сч" отображает "`-"
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549360
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уверен, что ODBC такое пропустит, но начиная с 6 версии дату можно указать так:

DATE(YYYY,MM,DD)

Т.е. в функцию Date() передать 3 параметра: год, месяц, день

Код: plaintext
BETWEEN DATE( 2006 , 2 , 1 ) AND DATE( 2006 , 2 , 28 )

И кстати, разве из той программы, откуда ты запускаешь запрос нельзя отловить сообщение об ошибке? Приходит ли какая-то ошибка от ODBC-соединения?
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549375
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вобщем в кодировке ОЕМ получается, а надобы в ANSI
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549389
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в том то и дело что ошибок нет - но и выборка пустая была.
а вообще драйвер сообщает либо синтакс еррор, либо нет колонки ' ', либо неподдерживаемы фразы.ключевые слова - но информации все равно мало.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549415
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OEMTOANSI()
ANSITOOEM()
пользуйся
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549460
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например
replace docnum with oemtoansi (docnum)
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549469
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, в общем-то, от представления даты в запросе кодовая страница результата не зависит. А CPDBF() для 1SJOURN смотрел? И что там?
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549474
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
firererработает. но терь в поле DOCNUM кодировка непонятная. вместо "Сч" отображает "`-"
Посмотри каким-нибудь 16-ричным редактором (Norton Commander, Disco Commander, FAR-manager и т.п.) что записано (какое значение) в 0 и 29 байте заголовка таблицы (первый байт имеет порядковый номер 0)

0 байт - это формат таблицы
29 байт - это кодовая страница

0x65 - 866 - Russian MS-DOS
0xC9 - 1251 - Russian Windows

В принципе, для работы с 6 ODBC еще требуется файл foxpro.int (от слова international). Его надо класть в папку Windows\System или WinNT\System32 (в зависимости от версии Windows) . Скачать можно здесь

http://msdn.microsoft.com/vfoxpro/downloads/download.asp?ID=027
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549481
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2DIMM@ прошу прощения, в каком месте?
SELECT
JOURN.DOCNO AS DOCNUM,
JOURN.DATE AS DOCDATE
FROM
1SJOURN AS JOURN
WHERE
JOURN.DATE BETWEEN {^2006-02-01} AND {^2006-02-16}

Работает - токо кодировка неправильная.

SELECT
OEMTOANSI(JOURN.DOCNO) AS DOCNUM,
JOURN.DATE AS DOCDATE
FROM
1SJOURN AS JOURN

WHERE
JOURN.DATE BETWEEN {^2006-02-01} AND {^2006-02-16}

Говорит: Column 'DATE' is not found

если ступил - сильно не пенайте.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549543
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перед запросом поставь строку
replace X with ansitooem(X) all
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549549
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извини

replace docnom with oemtoansi(docnom) all
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549602
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2firerer:

А у меня второй запрос работает :) Проверяй буковки/значки в строке команды. :)
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549614
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нулевой байт: 03
29 байт: 4С

Реплэйс перед запросом на результат не влияет
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549632
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Sergey Sizov боюсь проверять тут нечего: добавляю ОемТоАнси - не работает, убираю - работает. запрос - простейший.
драйвер такой?
есть еще один драйвер для работы с ДБФ - но там чето совсем както не порусски все. :)
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549642
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а можно ли в запросе внешнюю функцию использовать?
вот вопрос.
надо из поля вида "кро00000145" получить "145"
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549645
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели снова
Column 'DATE' is not found?
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549680
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что значит "снова"?
ета фигня и выскакивает токо когда я пытаюсь пристегнуть ОЕМтуАНСИ
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549697
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если ты про реплейс - то от него вообще никакого результата...что есть - что нету.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549718
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черт, да что такое
я выполняю эти команды и в зависимости от наличия replace
получаю колонку с разной кодировкой:
sele das
replace nd with ansitooem(nd) all
select das.nd;
from das
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549750
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сорри что ввел в заблуждение...у меня с самим дбфом чота преключилось. заменил его на нормальный - все в анси
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549785
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и может тебе это поможет:
left(x,y) - выделяет из строки X указанное в Y число символов,
начиная слева
right(x,y) - то же только справа
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549819
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2DIMM@ маловероятно. как мне определить какое количество символов вырезать?
может быть "ооавм0012" и "фы00ф14324"
надо справа числовую часть получить, тоесть 12 и 14324
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549875
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тебе обязательно нужно это делать во время запроса?
Или можно сохранить это , а потом изменять?
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549883
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2DIMM@ результат запроса у меня пользуется как поставщик данных для табличного поля на форме. никуда сохранить ни както записать данные в етот результат я уже не могу.
потому и вопрос: можно ли в запросе использовать внешние функции. написанные мной для поля например
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549938
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да можно, только что сам попробывал
select das.nd;
from das;
where red()


func red()
return .t.

меняем .t. на .f. и ничего не выбирается
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33549957
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, я уже домой ухожу, работа окончена
Счастливо!!!
Завтра, если данные вопросы будут актуальны, подумаем
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33550201
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эт не то.
я думал что нить типа:
SELECT
JOURN.CLOSED AS PICT,
JOURN.DATE AS DOCDATE,
glDescriptionOfDocNum(JOURN.DOCNO) AS DOCNUM,


но фик там - грит снова что нет колонки DATE
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33550984
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро. Ну если твой вопрос еще актуален, то можно попробывать сделать так
sele das
select vid(das.od);
from das

func vid()
parame a
for i=1 to len(a)
if type(right(alltr(a),i))='N'
_str=right(alltr(a),i)
else
exit
endif
endfor
return _str
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33555238
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIMM@Доброе утро. Ну если твой вопрос еще актуален, то можно попробывать сделать так
sele das
select vid(das.od);
from das



спасибо за текст функции, но с этим у меня проблем не было. проблема в вызове функции в селекте - не хочет
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33556045
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
firerer DIMM@Доброе утро. Ну если твой вопрос еще актуален, то можно попробывать сделать так
sele das
select vid(das.od);
from das



спасибо за текст функции, но с этим у меня проблем не было. проблема в вызове функции в селекте - не хочет


так, а какие конкретно проблемы(что ругается?)? у меня все работает.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33556390
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIMM@
так, а какие конкретно проблемы(что ругается?)? у меня все работает.
у меня чота не пойму:

Select
Reg.sp478 As Nomenclature,
Nom.Descr As Name,
Nom.sp175 As Art,
Sum(Reg.sp479) As Quant
From
RG480 As Reg
Left join
sc60 As Nom On Nom.Id = Reg.sp478
Where
(RG480.sp479 > 0)
Group by
Nomenclature

даже sum не проходит. в данном случае ругается на отсутсвие колонки Descr.
может существуют какието правила использования функций в запросах о которых я не знаю? просветите
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33556427
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 firerer:

Что-то я никак не соображу откуда, как и куда ты делаешь свои запросы? Таблицы 1С где лежат - в DBF или на SQL Server?
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33556474
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблицы DBF ессно на SQL лежать не могут
Подключаюсь через ВФП ОДБС драйвер: "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + IBDir() + ";Exclusive=No;Collate=machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO";

Дальше делаю запрос.
все какбы.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33556505
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
firerer даже sum не проходит. в данном случае ругается на отсутсвие колонки Descr.
может существуют какието правила использования функций в запросах о которых я не знаю? просветите

Для начала уменьшите переопределение полей до 10 символов, а то в DOS времена таких длинных имен полей не было
Код: plaintext
1.
Select
Reg.sp478 As Nomenclature
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33556552
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWist
Для начала уменьшите переопределение полей до 10 символов, а то в DOS времена таких длинных имен полей не было
Код: plaintext
1.
Select
Reg.sp478 As Nomenclature


уменьшил. как с nomenclature так и c nomen работает одинаково.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33556632
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошу прощения - раскурил
в условии надо было алиас указывать а не имя таблицы - вроде пошло все как надо
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33556907
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 firerer:

firererТаблицы DBF ессно на SQL лежать не могут


1. Если внимательно прочитать мой пост, то можно заметить, что там речь шла о "таблицах 1С", а не о "таблицах DBF".

2. Таблицы 1С могут лежать и на SQL Server.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33557561
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov.
1. Если внимательно прочитать мой пост, то можно заметить, что там речь шла о "таблицах 1С", а не о "таблицах DBF".

запятую забыл поставить: "Таблицы DBF, ессно на SQL лежать не могут." :) сорри
просто в постах выше уже писал что:
а) пользую драйвер VFP (ИМХО не умеет он с сиквелом работать)
б) пост номер 3: "DATE - поле в дбф. тип - дата", "сам дбф смотрю дбф фьювером про"

Sergey Sizov.
2. Таблицы 1С могут лежать и на SQL Server.
проэто конечноже в курсе.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33557606
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро. Ну что, всё получилось? :)
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33557720
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIMM@Доброе утро. Ну что, всё получилось? :)
спасибо: все получилось, но возникают новые вопросы :)
Select
Reg.sp478 As Nomen,
Reg.Period As Period,
SUM(Reg.sp479 - RegOst.sp101) As Necessary
From
RG480 As Reg
Left join
RG98 As RegOst On RegOst.sp99 = Reg.sp478
Left join
sc60 As Nom On Nom.Id = Reg.sp478
Where
(Reg.sp479 - RegOst.sp101 > 0)
AND
Reg.Period = {^2006-02-01}
AND
RegOst.Period = {^2006-02-01}
Group by
Nomen

При попытке вставить в условие вместо (Reg.sp479 - RegOst.sp101 > 0)
функцию SUM(Reg.sp479 - RegOst.sp101) > 0 ругается на отсутсвие файла sum.prg (я так понимаю файл с описанием самой функции?)
Есть ли возможность указать так:
Where
(Necessary >0)
?
и если да - то как?
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33558108
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C функ. SUM у тебя все нормально(читай на нее help).
Мне кажется ты неккоректно ставиш условия выбора. Это условие(с Sum) не зависит от того где находится указатель записи при выборке, оно как бы общее. Загоняй лучше свой Select под If,его условием и будет проверка больше ли сумма нуля, и если да то Select. А в селекте выкидывай это условие.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33562060
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi firerer!

1) Такой БУКВАЛЬНО запрос является некорректным - в выражении группировки
должны быть указаны ВСЕ поля, которые не находятся внутри агрегирующих
функций (т.е. внутри SUM в твоём случае), или эти поля должны в списке
отбора быть помещены внутрь агрегирующих функций (например MIN или MAX, т.к.
в фоксе нету LAST/FIRST или других более сложных аналитических функций)
2) Агрегирующая функция не может применяться в WHERE части - ибо если
говорить грубо, то WHERE работает ещё ДО выполнения запроса (фильтрует
исходные таблицы) - и соответственно она никак не может видеть "результат"
агрегирования. Зато такой результат виден в HAVING части - она кстати для
того и существует - это фильтр для "результата", а не для "исходных данных".
При этом можно как повторить условие из списка полей, так и просто обратится
по имени нового - "вычисленного" поля. Из ещё других интересных
возможностей - в HAVING можно использовать такие выражения, которых нету в
списке полей - например в запросе вычислять только SUM(поле), а в HAVING
проверять MAX(поле).

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Драйвер ODBC VFP возвращает: Operator/operand type mismatch
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]