![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамические запросы
Desyatnik © (2010-06-16 12:57:00)Добрый день, господа программисты!
Проблема с датами с Субд Access
вот такой код
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Insert into ArhivZAKAZ');
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('From ZAKAZ');
ADOQuery1.SQL.Add('Where Data_zakaza<'''+dateTostr(date-30)+'''');
ADOQuery1.ExecSQL;
Говорит "Несответствие типов в условии"
Как решить этоту проблему.
12 (2010-06-16 13:31:00) [21]
> это ты от Tdate отнимаешь целое число? тут нужно incday(daye,
> -30)
function IncDay(const AValue: TDateTime;
const ANumberOfDays: Integer): TDateTime;
begin
Result := AValue + ANumberOfDays;
end;
Автору
см.2
+
> с датами с Субд Access
вообще проблемы, имхо
У меня один и тот же код с параметрами работает в mssql и oracle - но не хочет в Access..
> ParamByName('P1').AsDate:=date-30;
писал, не понимает. Толи поле как не так определял, толь лыжи не ехали :)
а потом переделал все заново, вроде также все делал - но работает уже..
а т.к. чудес не бывает - значит, что-то по-другому все же сделал..
Ega23 (2010-06-16 13:29:00) [22]
> ixen © (16.06.10 13:13) [1]
> это ты от Tdate отнимаешь целое число? тут нужно incday(daye, -30)
Иногда лучше жевать, чем говорить.
unit System
TDateTime = type Double;
Правильный$Вася (2010-06-16 13:14:00) [23]потому что дату надо передавать как параметр, а не строкой неизвестного формата
ADOQuery1.SQL.Add('Where Data_zakaza<:P1');
ADOQuery1.SQL.ParamByName('P1').AsDate:=date-30;
ixen (2010-06-16 13:13:00) [24]
> date-30
это ты от Tdate отнимаешь целое число? тут нужноincday(daye,-30)