Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

странное поведение 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))
>
>

Это два разныхпараметра


Наверх

Титульная страница Поиск, карта сайта Написать письмо