Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2013, 06:47   #1
ferron
Новичок
Джуниор
 
Регистрация: 16.04.2013
Сообщений: 2
По умолчанию Delphi + MSSQL2008 + Фильтр время

Всем привет. Как в делфи записать запрос для выборки времени в бд mssql. Для access такой вариант start_bell between '+formatdatetime('#hh/mm/ss#',d1)+' and '+formatdatetime('#hh/mm/ss#',d2)+' . Каков будет для mssql????
ferron вне форума Ответить с цитированием
Старый 16.04.2013, 09:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для ЛЮБОЙ БД, чтобы не было глюков и косяков нужно использовать ПАРАМЕТРЫ (параметрический запрос:
Код:
AdoQuery1.Close;
AdoQuery1.SQL.Text := 'select * from Таблица where start_bell between :d1 and :d2';
AdoQuery1.Parameters.ParamByName('d1').Value := d1; 
AdoQuery1.Parameters.ParamByName('d2').Value := d2; 
AdoQuery1.Open;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.04.2013, 19:28   #3
ferron
Новичок
Джуниор
 
Регистрация: 16.04.2013
Сообщений: 2
По умолчанию

Как записать правильный запрос?
ado2.SQL.Add('and start_bell > :a7 and start_bell < :a8');
ado2.Parameters.ParamByName('a7').V alue := '19:00:00';
ado2.Parameters.ParamByName('a8').V alue := '09:00:00';
ferron вне форума Ответить с цитированием
Старый 17.04.2013, 10:56   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Так вряд ли будет работать - вы передаёте строку в качестве параметра.
т.е. фактически, пытаетесь выполнить такой запрос:
Код:
and start_bell > '19:00:00' and start_bell < '09:00:00'
это во-первых.

во-вторых, имхо, запрос противоречивый (ну вряд ли найдётся запись, где время БОЛЬШЕ 19 часов и ОДНОВРЕМЕННО МЕНЬШЕ 9...

ну и в в-третьих, старайтесь указывать и какого типа поле start_bell в базе.
И что в этом поле реально находится (сделайте select start_bell from ... - посмотрите, процитируйте...)

успехов.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фильтр на dbgrid [delphi] chircov090993 Помощь студентам 1 29.04.2012 21:45
фильтр в delphi Cas01 Общие вопросы Delphi 0 04.03.2012 19:59
проблема с mssql2008 express offname SQL, базы данных 0 05.01.2012 08:22
перенос таблиц с mssql2008 на oracle 11g ShowMeYourStyle SQL, базы данных 8 04.08.2011 06:23