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

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

Параметры в TADOQuery [D6, Access]


msguns ©   (2004-09-27 12:33:00) 

Имеется
 Гл.таблица (adoT:TADOQuery)
 Подчиненная  (adoTb1:TADOQuery)
    SQL:
      SELECT * FROM FondParts
      WHERE FID=:pfid
    Parameters:
      pfid (UID связки с главной тб.)

 при переоткрытии или навигации по главной  делается переоткрытие подчиненной

function TfrmDB.ReOpen_Parts: boolean;
begin
 result := true;
 with adoqParts do
   try
    if not Active then Close;
    Parameters.ParamValues['pfid'] := adoqFonds.FieldByName('FID').Value;
    if Tag>0 then Locate('PartID',Tag,[]);
   except
     result := false;
   end;
end;


В результате в рез.курсор не попадает ничего. Если же вместо
параметричского запроса влепить тупо
    SQL[1] := '  WHERE FID='+VarToStr(adoqFonds.FieldByName('FID').Value);
 то все пляшет.

Впервые сталкиваюсь с ADO (условия постановки, т.к. БД аксес),
чего-то не понимаю, хотя хелпы перечитал, в т.ч. и то, что нетути у ADO прямого преобразования значений филдов As..
 Помогите, пожалуйста, неграмотному ;))


msguns   (2004-09-27 12:52:00) [1]

>Vlad ©   (27.09.04 12:47) [5]
>или я еще не проснулся или.....
if Active then Close - может так все-таки?

Батюшки-святы !!!!!!!!!

Блин, вот что значит работать с 8 утра. Спасибо и вопрос закрыт
И посыпаю пеплом свою седеющую лысину....


msguns   (2004-09-27 12:50:00) [2]

>Johnmen ©   (27.09.04 12:45) [4]
>Для подчиненного запроса просто указать DataSource на первый.

Это, конечно, сразу напрашивается ;)) Но не получается. Во-первых, потому что понятие "Главный-Подчиненный" в моем случае очень условное (я выполняю слияние и ремонт 2-х версий одной БД) т.е. в Гл.таблице может быть 2 и более записей с одним FID), а во-вторых, хотелось бы все же разобраться в этими параметрами и филдами (в смысле Адошными)


Vlad   (2004-09-27 12:47:00) [3]


> Это для того, чтобы одной процей переоткрывать запрос ВО
> ВСЕХ СЛУЧАЯХ

или я еще не проснулся или.....
if Active then Close - может так все-таки?


msguns   (2004-09-27 12:45:00) [4]

>Vlad ©   (27.09.04 12:40) [1]
>У параметров св-во DataType, Direction установлено?
 Да

>p.s. а это для чего?
>     if not Active then Close;

Это для того, чтобы одной процей переоткрывать запрос ВО ВСЕХ СЛУЧАЯХ, в.ч. и тогда, когда меняется сортировка или условия выборки. А вообще-то это у меня интербэйсовая привычка ;)


Johnmen   (2004-09-27 12:45:00) [5]

>msguns  

Для подчиненного запроса просто указать DataSource на первый.
И WHERE FID=:<имя поля связки из первого запроса>


Vlad   (2004-09-27 12:40:00) [6]

У параметров св-во DataType, Direction установлено?
p.s. а это для чего?

>     if not Active then Close;

?


msguns   (2004-09-27 12:40:00) [7]

Пардон, там опущен Open (просто пропала строка при правке постинга), который, конечно же, присутствует в коде.


Наверх

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