![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Диалекты SQL или ....?
Romann © (2003-07-21 16:09:00)
Через компанент TQuery делаю запрос к таблицам FoxPro.
Алиас создан в ODBC Visual FoxPro Driver.
Простой запрос типа
SELECT Name, Fam, Year FROM Spis order by Year
выполняет без проблем, а на запрос
SELECT Name, Fam, Year FROM Spis
WHERE Year> 1955
Выдает ошибку General SQL Error
[ODBC Visual FoxPro Driver]Operator/Operand type mismatch
Что не так, или есть какие-нибудь ограничения в диалекте SQL.
kaif (2003-07-26 15:47:00) [1]
С полями типа Date нужно всегда использовать параметрический запрос. Например:
Query.SQL.Text :=
"SELECT Name, Fam, Year FROM Spis WHERE Year < :Year";
Query.ParamByName("Year").AsDateTime := EncodeDate(2003,03,01);
Query.Open;
Иначе при изменении Региональных настроек windows (Date Separator) программа перестанет работать.
Romann (2003-07-26 10:04:00) [2]
В инфе указано тип поля Dпо моему это Date.
Anatoly Podgoretsky (2003-07-26 09:33:00) [3]
DATA <> Date
Romann (2003-07-26 09:28:00) [4]
SELECT Name, Fam, Year FROM Spis
WHERE Year<"01.03.2003" выдает туже ошибку!
В описании базы данных Year имеет тип DATA и длинну 8, а в Explorer и DBGride поле имеет 10 разрядов (21.01.2003) .
Может гдето здесь проблема?
Sandman25 (2003-07-22 16:30:00) [5]
Если Year имеет тип поля Date, то и сравнивать его надо со значением типа Date.
Попробуйте
SELECT Name, Fam, Year FROM Spis
WHERE Year> "1.1.1955"
Romann (2003-07-22 16:26:00) [6]
Выдает ощибку только с полем ТИПА DATA
sniknik (2003-07-21 16:26:00) [7]
тип поля Year? > 1955 = numeric ?? если нет то сравнивай с тем же типом.