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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2011, 15:13   #1
Prontit
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 39
Вопрос SQL запрос (UniDac)

Добрый день!

Использую UniDac для подключения к MySQL серверу. Делаю запрос в БД (UniQuery):

UniQuery1.SQL.Text:=('Select * from IRR where where date_f <= :first_date and date_l >= :first_dater and pay=1;');
UniQuery1.ParamByName('first_date') .Value:=FormatDateTime('yyyy-mm-dd', sDateEdit1.Date);
UniQuery1.ParamByName('first_dater' ).Value:=FormatDateTime('yyyy-mm-dd', sDateEdit1.Date);

т.е. мне нужно вытащить все данные, где выбранная дата находится между двух дат которые содержатся в БД + еще условие (pay=1) . Вроде бы все правильно (работало в ADO на Delphi 7), сейчас пишу на Delphi 2010, версия сервира 5.5 (MySQL, FreeBSD)
Вылезает такая ошибка:


ошибку понял (в том смысле что знаю англ.), но не знаю что именно не так...почему в этой версии не идет такой синтаксис..и какой нужен

Может кто-нибудь сталкивался, или просто знает как быть.

Заранее благодарю!
Prontit вне форума Ответить с цитированием
Старый 16.08.2011, 16:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

меня всегда "умиляет", когда люди используют параметрический запрос, чтобы передать в запрос дату (и это абсолютно правильно!), но вместо того, чтобы передавать дату, передают туда строку!! Это же полностью нивелирует смысл параметризации в данном случае!!!

попробуйте по простому
Код:
UniQuery1.Close;
UniQuery1.SQL.Text:=('Select * from IRR where date_f <= :first_date and date_l >= :first_dater and pay=1;');
UniQuery1.ParamByName('first_date') .Value:= sDateEdit1.Date;
UniQuery1.ParamByName('first_dater' ).Value:= sDateEdit1.Date;
или. если Вы всегда собираетесь передавать в запрос ОДНУ И ТУ ЖЕ ДАТУ, напишите так:
Код:
UniQuery1.Close;
UniQuery1.SQL.Text:=('Select * from IRR where date_f <= :first_date and date_l >= :first_date and pay=1;');
UniQuery1.ParamByName('first_date') .Value:= sDateEdit1.Date;

ДОБАВЛЕНО
проглядел первый раз.
А зачем у Вас WHERE WHERE два раза?!!!!!!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.08.2011, 09:03   #3
Prontit
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
меня всегда "умиляет", когда люди используют параметрический запрос, чтобы передать в запрос дату (и это абсолютно правильно!), но вместо того, чтобы передавать дату, передают туда строку!! Это же полностью нивелирует смысл параметризации в данном случае!!!

попробуйте по простому
Код:
UniQuery1.Close;
UniQuery1.SQL.Text:=('Select * from IRR where date_f <= :first_date and date_l >= :first_dater and pay=1;');
UniQuery1.ParamByName('first_date') .Value:= sDateEdit1.Date;
UniQuery1.ParamByName('first_dater' ).Value:= sDateEdit1.Date;
или. если Вы всегда собираетесь передавать в запрос ОДНУ И ТУ ЖЕ ДАТУ, напишите так:
Код:
UniQuery1.Close;
UniQuery1.SQL.Text:=('Select * from IRR where date_f <= :first_date and date_l >= :first_date and pay=1;');
UniQuery1.ParamByName('first_date') .Value:= sDateEdit1.Date;

ДОБАВЛЕНО
проглядел первый раз.
А зачем у Вас WHERE WHERE два раза?!!!!!!!!
тоже проглядел..убрал where и все заработало! спасибо!
Prontit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с UniDac. Сохранение в MySQL GreenShuller БД в Delphi 14 24.02.2013 08:52
SQL запрос grafgrial Общие вопросы Delphi 8 19.10.2010 15:57
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15