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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2013, 19:57   #1
akramar
Новичок
Джуниор
 
Регистрация: 11.05.2013
Сообщений: 3
По умолчанию Проблема с параметром в запросе ADOQuery

Уважаемые господа программисты!
Помогите разобраться со следующей проблемой
имеется запрос ADOQuery
Код:
SELECT tables.name
FROM tables INNER JOIN reservetables ON tables.id = reservetables.idtable
WHERE ((reservetables.idclient = :id) AND (reservetables.reservedate = :rd))
выбираются связанные записи из двух таблиц, параметр id подставляется автоматически из таблицы tables, параметр rd передается из текста программы
Код:
qrrsrv.Parameters.ParamByName('rd').Value:= Date();
проблема в том, что без последнего условия запрос работает как надо, а при использовании второго условия возвращается пустой набор, т.е. записей как бы нет, хотя они на самом деле есть.
Помогите, пожалуйста, что я делаю не так?

Последний раз редактировалось Stilet; 11.05.2013 в 20:22.
akramar вне форума Ответить с цитированием
Старый 11.05.2013, 20:18   #2
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Сомнительно, что у Вас в БД есть точное соответствие между reservetables.reservedate и Date()
ReportCube вне форума Ответить с цитированием
Старый 11.05.2013, 20:23   #3
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Предположение такое.
В поле reservedate даты хранятся со временем.
Если так, то равенство никогда соблюдено не будет (в условии дата и время слева и только дата справа).
Для сравнения нужно выделять фрагмент даты из значения поля серверной функцией. Но как это выглядит зависит от применяемой СУБД.
Прик вне форума Ответить с цитированием
Старый 11.05.2013, 20:55   #4
akramar
Новичок
Джуниор
 
Регистрация: 11.05.2013
Сообщений: 3
По умолчанию

база данных MS Access 2003
поле reservedate имеет тип дата/время, формат поля - краткий формат даты
аналогичный запрос в другой форме работает нормально, только там текст запроса формируется в самой программе и в параметр передается значение DateTimePicker.Date
akramar вне форума Ответить с цитированием
Старый 11.05.2013, 21:34   #5
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Если нет данных, следовательно время в таблице и время в параметре не совпадает - приведите к единому значению и получите нужный результат.
ReportCube вне форума Ответить с цитированием
Старый 11.05.2013, 22:03   #6
akramar
Новичок
Джуниор
 
Регистрация: 11.05.2013
Сообщений: 3
По умолчанию

Цитата:
Если нет данных, следовательно время в таблице и время в параметре не совпадает - приведите к единому значению и получите нужный результат.
Сегодня 22:55
ReportCube, благодарю за подсказку! Действительно, проблема была со временем. Решил проблему использованием функции DateValue (со стороны сервера).
Спасибо всем!
akramar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с датой и с ADOquery Kamuist БД в Delphi 27 03.04.2013 20:40
Проблема с ADOQuery и Access hemn6vyr БД в Delphi 3 05.03.2013 18:37
RecordCount в dbExpress при запросе SELECT с параметром Leximus БД в Delphi 0 31.05.2012 09:50
проблема с запросом ADOQuery Kolya29 БД в Delphi 29 07.06.2010 20:38
[delphi] ADOQuery Проблема sPan4eZ БД в Delphi 14 17.09.2009 15:44