-
> ADODataSet1.Parameters.ParamByName('DateTimeQSO').DataType:
> =ftDateTime;
Вот где собака порылась! Теперь все работает. Большое спасибо!
Остался только один для меня непонятный момент:
когда я создавал параметр DateTimeQSO в ObjectInspector'е - я там его тип как ftDateTime указывал. Получается нужно еще и руками прописывать?
Кстати если и так делать
ADODataSet1.Parameters.CreateParameter('DateTimeQSO', ftDateTime, pdInput, 0, NULL);
все равно нужно явно указывать тип параметра перед его использованием.
Странно, но нигде об этом не написано.
-
>когда я создавал параметр DateTimeQSO в ObjectInspector'е - я там его тип >как ftDateTime указывал.
Ты же Sql заменил потом.
-
> Ты же Sql заменил потом.
Имеется ввиду изменил из-за DateQSO+TimeQSO - тип результата не определен?
-
не из-за, а потому-что. заменил запрос, значит должен определить его переменные (или задать так чтобы самоопределилось), как локальные переменные в процедуре... то что относится к предыдущей для этой значения не имеет.
-
Alex_C (27.12.11 18:46) [42]
Ты SQL же меняешь в рантайм, у тебя уничтожаются все параметры и пересоздаются когда присваиваешь commandtext.
-
> пересоздаются когда присваиваешь commandtext.
Ну так они же должны пересоздаваться с изначальным типом? Причем это только для типа DateTime актуально - для остальных типов их снова указывать не надо.
> заменил запрос
Делал Prepared := True;
Все тоже самое.
Сейчас порылся в инете - по ходу это "фича" именно для Access+DateTime field type. В нескольких местах нашел, что для типа DateTime нужно делать как в [49].
Еще раз спасибо за подсказку!!!
-
> как в [49].
как в [39] :)
-
> Ну так они же должны пересоздаваться с изначальным типом?
кому должны? тебе? борланд перед тобой отчитыватся?
и не передергивай, было
> у тебя уничтожаются все параметры и пересоздаются когда присваиваешь commandtext.
какой там изначальный тип, у уничтоженного?
> что для типа DateTime нужно делать как в [49].
не выдумывай
сделай вот так, буквально
with ADODataSet1 do begin
CommandText := 'SELECT Call,(DateQSO+TimeQSO) AS DateTimeQSO, :DT AS Hello FROM RX4HX WHERE (DateQSO+TimeQSO)>:DateTimeQSO';
Parameters.ParamByName('DateTimeQSO').Value:= Now();
Parameters.ParamByName('DT').Value:= Now();
Open;
end;
в дизайне CommandText пустой.
-
> сделай вот так, буквально
Буквально вот так и сделано.
Сейчас уже поздно - завтра еще раз перепроверю - может где действительно CommandText переопределяю.
Кстати нашел очень хорошее объяснение этому всему:
http://drkb3.narod.ru/855.htmдумаю всем кто начинает работать с параметрами это прочитать обязательно!
-
> > Ну так они же должны пересоздаваться с изначальным типом?
>
> кому должны? тебе? борланд перед тобой отчитыватся?
Т.е. я правильно понимаю, если я создал в инспекторе объектов параметр с DataType = ftDateTime, я без боязни могу использовать только первый раз, и изменив CommandText , повторно параметр существовать будет, но его тип уже нужно повторно определить?
-
> повторно параметр существовать будет
совсем не обязательно, может и не существовать...
справку наконец то читать будем или нет?