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

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

странности с параметром ADO


Страницы:   1 2

stud ©   (2006-05-17 12:06:00) 

есть адодатасет, присваиваю:
clientsf.clientq.CommandText:='SELECT DISTINCT client.client_type, client.client_id, client.inn,
...........
where upper(client.name) like :cl_n';
при попытке присвоить значение параметру получаю сообщение об ошибке
что указаный параметр не найден.
ничего не по понимаю??


MsGuns   (2006-05-18 17:55:00) [1]

А что, перед стартом запроса нельзя вывести "состряпанный" сиквель и посмотреть на него "вживую" ?


ANB   (2006-05-18 15:49:00) [2]

Во, наконец то перенесли ветку.


> stud ©   (18.05.06 15:40) [23]

Огласите весь список, пожалуйста.


sniknik   (2006-05-18 15:47:00) [3]

в показаном коде ошибок нет...

p.s. действительно "не догоняеш" или придуриваешся?


stud   (2006-05-18 15:40:00) [4]


> не можеш найти сам, покажи код другому...

Application.CreateForm(Tclientsf, clientsf);
clientsf.clientq.CommandText:='..... - и вот имею АВ. в библиотеке sqloledb.dll.


ANB   (2006-05-18 15:32:00) [5]

> stud ©   (18.05.06 13:47) [20]

Значится так. Сначала надо кверю закрыть. Потом очень желательно ее почистить, и только потом присваивать текст запроса. Совет - убери константы из запроса - легче будет читать его текст
вот этот кусок

> when '''+'Ю'''+' then


плохо читается и непонятно - зачем здесь склейка ?


sniknik   (2006-05-18 15:07:00) [6]

не можеш найти сам, покажи код другому...


stud   (2006-05-18 13:47:00) [7]

sniknik ©   (18.05.06 11:40) [19]
это у вас скорее всего пресловутая ошибка в 17й строке.

думаю так оно и есть, но не могу никак найти.
Ega23 ©   (17.05.06 19:10) [17]
Покажи, что происходит на Tclientsf.OnCreate

ничего.


sniknik   (2006-05-18 11:40:00) [8]

ни разу не втречался с "такими граблями в ADO"... хотя довольно долго с ним работаю. это у вас скорее всего пресловутая ошибка в 17й строке.

другие были/и есть кое что до сих пор, но не с параметрами, не надо лишнего на него наговаривать.


V-A-V   (2006-05-18 07:58:00) [9]

Наступал я тоже на такие грабли в ADO.
Самый верный способ, если создание запроса идет динамически и спараметрами, то нужно перед присвоением параметра и отработкой запроса, проверить наличие параметра (если нет создать), затем определить (назначить) ему тип, а потом только присваевать значение.
После этого запрос отработает, если конечно нет др. ошибок.


Ega23   (2006-05-17 19:10:00) [10]

Покажи, что происходит на Tclientsf.OnCreate


stud   (2006-05-17 18:14:00) [11]

да создается в дизайне, все св-ва оставлены по умолчанию.
отключил в дельфх stop on delphi excesption ничего не ругается и все работает......


Ega23   (2006-05-17 16:46:00) [12]


> Application.CreateForm(Tclientsf, clientsf);
> clientsf.clientq.CommandText:='..... - и вот имею АВ. в
> библиотеке sqloledb.dll.


clientq - создаётся в design-time? Если да, то какие свойства выставлены?
Где идёт задание clientq.Connection?


stud   (2006-05-17 14:58:00) [13]

последовательность действий:
Application.CreateForm(Tclientsf, clientsf);
clientsf.clientq.CommandText:='..... - и вот имею АВ. в библиотеке sqloledb.dll.
но все почемуто работает. ничего не понимаю???


ЮЮ   (2006-05-17 13:04:00) [14]

>stud ©   (17.05.06 12:52) [12]

Значит AV где-то в доугом месте.
Или clientsf (clientsf.clientq) в одном случае nil и AV, в другом случае - живые


stud   (2006-05-17 12:52:00) [15]

чето полный финиш!!
получаю АВ, при этом текст запроса нормально присваивается и присваивается нормально параметр и запрос отрабатывает нормально!!


stud   (2006-05-17 12:48:00) [16]

вот полный запрос
clientsf.clientq.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 '+
                                       ' 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 '+
                                       ' where upper(client.name) like :cl_n';

теперь при попытке присвоить его командстроке получаю AV??


stud   (2006-05-17 12:42:00) [17]

ЮЮ ©   (17.05.06 12:40) [9]
ща попробую

> Ошибка то какая ?


> указаный параметр не найден


ЮЮ   (2006-05-17 12:40:00) [18]

>но запрос формируется динамически и количество параметров разное

Может здесь собака и зарыта? Используй FindParam, как в справке написано, перед тем как присваивать


ЮЮ   (2006-05-17 12:37:00) [19]


> сначала был true, затем поменял на false


> Задай параметр, задай ему тип String, Input и размер.

или верни true

P.S. Когда заработает, обрамляющие кавычки в значении параметра, ИМХО, лишние.


ANB   (2006-05-17 12:36:00) [20]

ЗЫ. upper(client.name) - убъет работу через индекс. Хотя %СТРОКА% уже не будет его использовать.


Страницы:   1 2

Наверх

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