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

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

в продолжение вчерашней проблемы с ADO


stud ©   (2006-05-19 13:20:00) 

теперь делаю так, кидаю на форму ADODataset в св-во commandtext прописываю:
SELECT DISTINCT client.client_type, client.client_id, client.inn, client.kpp, client_person.passer, client_person.pasnum,
 sub_type = case when client.client_type = 'Ф' then client_person.sub_type  else client_company.sub_type end,
 case client.client_type  when 'Ю' then isnull((select client_company.shortname from client_company where client_company.client_id=client.client_id),client.name)
 else client.name end as name,  account.account, account.acc_id
 FROM client
 left join client_person on client.client_id = client_person.client_id
 left join client_company on client.client_id = client_company.client_id
 left outer join account on client.client_id=account.client_id
 where (upper(client.name) like :cl_n)

при установке св-ва active в true получаю сообщение:
multi-step OLEDB operation generated. check each oledb status value, if available.
по описанию ошибки в инете ничего не нашел.


sniknik   (2006-05-20 13:33:00) [1]

> двух одноименных параметров в ADO не допускается.
вернее, нет того эффекта который ожидают по аналогии с BDE где разовое присваивание значения по имени инициализирует все одноименные.

так то сделать можно сколько угодно одноименных, но доступ к ним будет затруднен (только по индексу/порядковому номеру, и инициализировать все одно каждый).


sniknik   (2006-05-20 13:04:00) [2]

> (account = :acc) or (:acc = 0) ?
двух одноименных параметров в ADO не допускается.


ЮЮ   (2006-05-20 12:25:00) [3]

account=:acc od :acc=0 в список параметров добавлялось два параметра: :acc, :acc=0

Наверное, разработчики зпложились на "стильное" написание текста запроса.
а если так:

(account = :acc) or (:acc = 0) ?


stud   (2006-05-19 14:22:00) [4]

похоже всетаки с дельфями что-то стало((


vovnuke   (2006-05-19 14:15:00) [5]

2 [5] stud ©   (19.05.06 14:01)
> account=:acc od :acc=0
замени на "account = :acc or 0 = :acc"
но параметров добавится все равно два :acc и :acc


stud   (2006-05-19 14:01:00) [6]


> paramCheck=True сделать

сделан.
параметры теперь сам проверяю и значения по умолчанию присваиваю сразу.
смущает что при редактировании commandtext при добавлении/удалении параметров получаю AV. а когда была строка вида
account=:acc od :acc=0 в список параметров добавлялось два параметра: :acc, :acc=0


Desdechado   (2006-05-19 13:56:00) [7]

по аналогии с решением предыдущей проблемы - а не забыл ли добавить новый параметр?
может, лучше paramCheck=True сделать?


stud   (2006-05-19 13:38:00) [8]

с первой ошибкой вроде разрулилось, после изменения запроса не удалился один параметр. удалил его из parameters запрос отработал.
теперь к этом запросу добавляю строку
and (account.account like :acc) при попытке открыть - полчаю ошибку в ntdll.dll
меняю строку на
and (account.account =:acc) выдает ошибку AV в модуле msado15.dll
что это может значать???


stud   (2006-05-19 13:29:00) [9]

в аналайзере этот эапрос работает и раньше он работал.
просто я его решил формировать динамически во время выполнения программы, когда не получилось, решил вернуть все взад и тут начались эти чудеса. иногда вплоть до ошибки в ntdll я уж не знаю что думать, может с дельфями плохо стало??


Desdechado   (2006-05-19 13:23:00) [10]

не хочешь case в скобки взять?


Наверх

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