![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не работает запрос через Clientdataset [D7, Paradox]
nick2000 © (2007-09-14 10:38:00)Привет!У меня на серваке крутится сервер базы(ADOQuery,DataSetProvider2), соединяюсь через SocketConnection,clientdataset.Делаю запрос по дате, типа :
s1:='10-09-2007'
clientdataset1.CommandText='select * from base where s5='+s1;
поле s5- тип date
выдает пустой результат,хотя точно есть записи которые удовлетворяют условию. если делаю запрос не по дате а по какой-нибудь строке, то все нормально, выдает результат. Кто нибудь знает почему так и что сделать чтоб работал запрос по дате?
Desdechado (2007-09-14 12:46:00) [1]> Спасет только лоботомия
Это для клинического случая. В остальных вполне можно обойтись хорошим наставником.
Anatoly Podgoretsky (2007-09-14 12:08:00) [2]> Desdechado (14.09.2007 12:02:05) [5]
Спасет только лоботомия
Desdechado (2007-09-14 12:02:00) [3]> если бы использовался QuotedStr то это была бы строка
Но это не спасет автора от несуразностей представления - 10 сентября или 9 октября или вообще неподдерживаемый формат.
Только параметры.
Anatoly Podgoretsky (2007-09-14 11:33:00) [4]> Плохиш (14.09.2007 10:47:02) [2]
Поскольку это конкатернируется с запросом, то это не строка, а литеральное арифметическое выражение. ЮЮ сказал к чему приводит вычисление этого выражения, вот если бы использовался QuotedStr то это была бы строка, точнее строковый литерал.
ЮЮ (2007-09-14 10:53:00) [5]10-09-2007 = -2006
поэтомуselect * from base where s5=10-09-2007эквивалентен
select * from base where s5=-2006(вряд ли есть данные за тот период :)
Строковое представление даты у разных серверов разное, боле того может зависеть от настроек.
Поэтому во избежания геморроя лучше использовать параметр
select * from base where s5 = :s5
и присваивать ему значения типа TDateTime
Desdechado (2007-09-14 10:47:00) [6]Использовать параметры.
Плохиш (2007-09-14 10:47:00) [7]Используй параметры.
PS.
> s1:='10-09-2007'
Это не дата, а строка.