![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
странное поведение ADODataSet [D7, Access]
ivanoff © (2009-05-26 18:42:00)делаю:
SELECT Fld1, Fld2
FROM MyTable
WHERE (...) AND
((FromDT <= :DT) OR (FromDT IS NULL)) AND ((TillDT >= :DT) OR (TillDT IS NULL))
открываю ADODataSet с одними и теми-же параметрами:
из Delphi ----> пустой ???
из Access -----> Возвращает правельные данные !!!
так как DTпринимаю типа Variantделаю так, для уверенности
Parameters.ParamByName('DT').Value := VarToDateTime(DT);
Медвежонок Пятачок (2009-05-26 23:56:00) [1]И в Delphi я обрщаюсь по имени параметра а не по индексу ... Хочу понять ПОЧЕМУ
Открой генофонд и сравни что происходит в bde датасете при выполнении ParamByName().Value:=
с тем, что происходит в ADO при той же ситуации.
Если конечно хочешь понять почему
Нат (2009-05-26 23:52:00) [2]
> т.е. "знаю что на красный свет переходить нельзя, но раньше
> все получалось. почему сейчас очнулся в больнице?"
Дальше резковато... Все равно 5 баллов!
sniknik (2009-05-26 22:20:00) [3]> Хочу понять ПОЧЕМУ
аксесс это не дельфи и он не обязан задавать параметры также как ты.
если изменишь способ задания то и в дельфи можешь сделать также, например перепишешь парсер и присвоение чтобы принимал одноименные задавая значение всем, или просто обратишься по индексу, или по классической схеме (с "?") без дельфевской обертки, да блин масса способов. на то он и язык программирования что можно запрограммировать все, что хочешь, даже если кто то для тябя этого заранее не сделал.
turbouser (2009-05-26 22:18:00) [4]
> ivanoff (26.05.09 22:03) [4]
> ((FromDT <= : DT1) OR (FromDT IS NULL)) AND ((TillDT >= :
> DT1) OR (TillDT IS NULL))
> Parameters.ParamByName(' DT1').Value := VarToDateTime(DT);
>
> Parameters.ParamByName('DT2').Value := VarToDateTime(DT);
>
?
ivanoff (2009-05-26 22:03:00) [5]Почему в accesse работает, и спрашивает только один параметр?
И в Delphi я обрщаюсь по имени параметра а не по индексу ... Хочу понять ПОЧЕМУ ибо уже откорректировал так
((FromDT <= :DT1) OR (FromDT IS NULL)) AND ((TillDT >= :DT1) OR (TillDT IS NULL))
Parameters.ParamByName('DT1').Value := VarToDateTime(DT);
Parameters.ParamByName('DT2').Value := VarToDateTime(DT);
!!! после правельного напоминания !!! Плохиш © (26.05.09 19:21) [1]
sniknik (2009-05-26 20:48:00) [6]> это и я знаю, но это у меня это всегда работало, и работает в других местах того-же проекта. Почему в данном случе не работает?
т.е. "знаю что на красный свет переходить нельзя, но раньше все получалось. почему сейчас очнулся в больнице?"
извиняюсь за вопрос, но он просто напрашивается, ты в детстве слабоумием не страдал? может у тебя рецидив?
ivanoff (2009-05-26 20:12:00) [7]это и я знаю, но это у меня это всегда работало, и работает в других местах того-же проекта. Почему в данном случе не работает?
Плохиш (2009-05-26 19:21:00) [8]
> ((FromDT <= :DT ) OR (FromDT IS NULL)) AND ((TillDT >=
> :DT ) OR (TillDT IS NULL))
>
>
Это два разныхпараметра