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


Автор: nero1233 12.9.2007, 18:42
Есть БД в Access. Она подключена к Delphi через ADODataSet. Там есть поле типа Дата/Время/. В Delphi его надо отфильтровать, но это не получается. 
Код:
  ADODataSet1.Active:=false;
  ADODataSet1.CommandText:='select * from tablef where Data>01.01.1960';
  ADODataSet1.Active:=true;
Или ещё вариант
ADODataSet1.Active:=false;
  ADODataSet1.CommandText:='select * from tablef where Data>'+''''+'01.01.1960'+'''';
  ADODataSet1.Active:=true;
который тоже не работает. Как же его фильтровать?

Автор: Rodman 12.9.2007, 18:46
Кто такой Data???

Автор: nero1233 12.9.2007, 18:52
Это имя поля типа Дата/Время

Автор: Rodman 12.9.2007, 19:18
а если параметром передать попробовать дату?

Автор: nero1233 12.9.2007, 19:39
Не очень понял. Как параметром? Параметром Commandtext? У него их, вроде, нет.

Автор: ALeXandrK 12.9.2007, 19:47
Код

with ADODataSet1 do
begin
  Active:=false;
  CommandText:='select * from tablef where Data>:myData';
  Parameters.ParseSQL(':myData', true);
  Parameters.ParamValues['myData'] := StrToDate('01.01.1960');
  Active:=true;
end;

Автор: Rodman 12.9.2007, 19:49
ну типа
Код

  ADODataSet1.Active:=false;
  ADODataSet1.CommandText:='select * from tablef where Data>:Prm;';
  ADODataSet1.Parameters.ParamByName('Prm').Value:=DateTimePicker.Date;
  ADODataSet1.Active:=true;

Автор: Savek 13.9.2007, 11:56
Правильнее будет параметром, но если все-таки очень хочется строкой , то в аксесе дата заключается в решетки:
Код

ADODataSet1.CommandText:='select * from tablef where Data>#01.01.1960#';

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