![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
в продолжение вчерашней проблемы с 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 в скобки взять?