Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Выборка по дате в Firebird


Автор: Mina 15.5.2008, 09:30
Подскажите как написать запрос на выборку по дате
пробовал так, не получается
Код

   DataSet.SelectSQL.Clear;
   DataSet.SelectSQL.Add('SELECT * FROM TABLE');
   DataSet.SelectSQL.Add('WHERE DATE = ' + '''15.05.2008''');
   DM.DSetTransfer.Open;


Автор: Vas 15.5.2008, 09:46
Код

   DM.DSetTransfer.SQL.Clear;
   DM.DSetTransfer.SQL.Add('SELECT * FROM TABLE');
   DM.DSetTransfer.SQL.Add('WHERE DATE = ' + '''15.05.2008''');
   DM.DSetTransfer.Open;

Автор: Rodman 15.5.2008, 09:51
Цитата(Mina @  15.5.2008,  09:30 Найти цитируемый пост)
пробовал так, не получается

что говорит?
Код

   DataSet.SelectSQL.Add('WHERE DATE = ' + '''15.05.2008''');
   DM.DSetTransfer.Open;
тебе не кажется что ты открываешь че то не то! в какой то DataSet запрос кидаешь, а открываешь другое!

Автор: Mina 15.5.2008, 09:51
Извините, опечатка, должно быть так
Код

   DataSet.SelectSQL.Clear;
   DataSet.SelectSQL.Add('SELECT * FROM TABLE');
   DataSet.SelectSQL.Add('WHERE DATE = ' + '''15.05.2008''');
   DataSet.Open;


Добавлено через 13 минут
Цитата(Rodman @  15.5.2008,  09:51 Найти цитируемый пост)
что говорит?


Компилится без ошибок, но при подаче запроса ошибка 

Dynamic SQL Error.
SQL error code = -104.
Token unkown - line 2, column 12.
=.
'. Process stopped. Use Step or Run to continue.

Автор: Zmitro 15.5.2008, 11:00
попробуй так:
Код

    DataSet.Close;
    DataSet.SQLs.SelectSQL.Clear;
    DataSet.SQLs.SelectSQL.Add('SELECT * FROM TABLE ');
    DataSet.SQLs.SelectSQL.Add('WHERE DATE = :param;');
    DataSet.Params.ParamByName('param').AsInteger := Date;
    DataSet.Prepare;
    DataSet.Open;

Автор: Rodman 15.5.2008, 11:07
Zmitro, почему параметр целый? это же дата!

Автор: Mina 15.5.2008, 11:18
Цитата(Zmitro @  15.5.2008,  11:00 Найти цитируемый пост)
попробуй так:


При запросе на этой сроке
Код

DataSet.Prepare;


возникает ошибка

Dynamic SQL Error.
SQL error code = -104.
Token unkown - line 2, column 12.
=.
'. Process stopped. Use Step or Run to continue. 


Код

DataSet.Params.ParamByName('param').AsInteger := Date;


заменил на 
Код

DataSet.Params.ParamByName('param').AsDate := Date;

Автор: Rodman 15.5.2008, 12:01
Код

    DataSet.Close;
    DataSet.SQLs.SelectSQL.Clear;
    DataSet.SQLs.SelectSQL.Add('SELECT [DATE], * FROM [TABLE] ');
    DataSet.SQLs.SelectSQL.Add('WHERE [DATE] = :param;');
    DataSet.Params.ParamByName('param').AsDate := Date;
    DataSet.Prepare;
    DataSet.Open;
слова TABLE и DATE зареганные... 
если мой запрос не сработает, то лучше переименуй поля и много проблем уйдет!

Автор: Zmitro 15.5.2008, 12:05
Цитата(Rodman @ 15.5.2008,  11:07)
Zmitro, почему параметр целый? это же дата!

пардоны, параметр не тот ;)

Автор: Deniz 15.5.2008, 12:12
Mina, напиши как зовут таблицу и поля в ней.
Имена полей/таблиц, которые совпадают с зарезервированными словами, надо брать в двойные кавычки, например "Date".
И стоит учитывать, что такое имя становится регистрозависимым, т.е. "Date" и "date" разные поля.

Автор: Mina 16.5.2008, 03:46
Спасибо всем большое! smile 
Действительно все дело было в слове DATE, заменил на другое и все пошло.
Вопрос закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)