Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не работает запрос через 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'

Это не дата, а строка.


Наверх

Титульная страница Поиск, карта сайта Написать письмо