![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поле
Shved © (2002-12-02 13:12:00)Имеется таблица. Формирую SQL, чтобы произошла выборка интервала времени, в таком виде:
FirstDay:=Edit1.Text;
SecondDay:=Edit2.Text;
Form1.Query.Close;
Form1.Query.SQL.Clear;
Form1.Query.SQL.Add("select *");
Form1.Query.SQL.Add("FROM "BDAuto.DB" Bdauto");
Form1.Query.SQL.Add("WHERE "DAY" BETWEEN "+FirstDay+" and "+SecondDay);
Form1.Query.Open;
Form1.DBGrid1.DataSource:=Form1.DataSource2;
FirstDay и SecondDay в виде ДД.ММ.ГГ (текст), но при запуске программы вылезает ошибка "Invalid use of keyword "02"" (это год).
Что я не так делаю?
И вообще, в Delphi можно поставить полю атрибут D или @. Оба имеют формат даты, но чем они различаются (только временем?) и почемуо в примерах Delphi используется только формат "@"?
Вобщем, какой формат посоветуете. господа профессионалы и какой формат запроса должен быть?
Max Zyuzin (2002-12-02 14:48:00) [21]А где именно выдает ошибку???
Query.ParamByName("FirstDay").AsDate := StrToDate(FirstDay);
Здесь?
Shved (2002-12-02 14:40:00) [22]Все равно не помогает. Присваивал переменным FirstDay и SecondDay разные значения: DD.MM.YY, DD.MM.YYYY, DD.MM. Ошибка всегда одна и та же. В системе стоит формат DD.MM.YY.
Может быть, есть другой способ выборки по дате? Если у кого есть - киньте кусок кода, пожалуйста. Ну а если нет, то хоть подсоветуйте...
Max Zyuzin (2002-12-02 14:34:00) [23]Ну вообще то, формат должен быть такой как в системе...
Shved (2002-12-02 14:32:00) [24]А тот код, что вы предложили - не работает. Пишет, что неправильный формат даты. Какой формат должен быть, если атрибут поля "D", а формат записей в поле DD.MM.YY?
Shved (2002-12-02 14:15:00) [25]Спасибо. А по поводу форматов "D" и "@" что скажете? Что лучше и почему?
ЮЮ (2002-12-02 13:21:00) [26]Если пихать дату непосредственно в запрос, то, ао синтаксису, она должна быть обрамлена кавычками. А чтобы не зависеть от формата даты, лучше использовать в запросе параметры
Max Zyuzin (2002-12-02 13:20:00) [27]Значения надо взять в кавычки... в твоем случае это выглядит так...
Form1.Query.SQL.Add("WHERE "DAY" BETWEEN """+FirstDay+""" and """+SecondDay+""");
Это все одинарные кавычки... но ИМХО лучше сделать так...
Form1.Query.Close;
Form1.Query.SQL.Clear;
Form1.Query.SQL.Add("select *");
Form1.Query.SQL.Add("FROM "BDAuto.DB" Bdauto");
Form1.Query.SQL.Add("WHERE "DAY" BETWEEN :FirstDay and :SecondDay");
try
Query.ParamByName("FirstDay").AsDate := StrToDate(FirstDay);
Query.ParamByName("SecondDay").AsDate := StrToDate(SecondDay);
except
/// Хреновая дата....
end;
Form1.Query.Open;