Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

странности с параметром ADO   Найти похожие ветки 

 
stud ©   (2006-05-17 12:06) [0]

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


 
ЮЮ ©   (2006-05-17 12:10) [1]

Код "попытки...", его расположение относительно приведенной строки, тип clientq ?


 
Ega23 ©   (2006-05-17 12:10) [2]

ParamCheck чему равен?


 
stud ©   (2006-05-17 12:21) [3]

ЮЮ ©   (17.05.06 12:10) [1]
тип clientq


> есть адодатасет

Ega23 ©   (17.05.06 12:10) [2]
ParamCheck чему равен?

сначала был true, затем поменял на false
результат одинаковый.
ЮЮ ©   (17.05.06 12:10) [1]
Код "попытки...", его расположение относительно приведенной строки

после создания формы датасету присваивается командстрока, после ввода пользователем в эдите значения - значение присваивается параметру. и на
clientq.Parameters.ParamByName("cl_n").Value:="""%"+ansiuppercase(dxedit1.Text)+"%""";
выдает ошибку


 
Ega23 ©   (2006-05-17 12:23) [4]


> затем поменял на false


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


 
stud ©   (2006-05-17 12:27) [5]

Ega23 ©   (17.05.06 12:23) [4]
в дизайне задавал, все нормально работает, но запрос формируется динамически и количество параметров разное


 
ANB ©   (2006-05-17 12:34) [6]


> clientq.Parameters.ParamByName("cl_n").Value:="""%"+ansiuppercase(dxedit1.
> Text)+"%""";

А зачем здесь лишние апострофы ?

clientq.Parameters.ParamByName("cl_n").AsString:="%"+ansiuppercase(dxedit1.
Text)+"%"; - вполне достаточно.

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


 
ANB ©   (2006-05-17 12:36) [7]

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


 
ЮЮ ©   (2006-05-17 12:37) [8]


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


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

или верни true

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


 
ЮЮ ©   (2006-05-17 12:40) [9]

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

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


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

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

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


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


 
stud ©   (2006-05-17 12:48) [11]

вот полный запрос
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:52) [12]

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


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

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

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


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

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


 
Ega23 ©   (2006-05-17 16:46) [15]


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


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


 
stud ©   (2006-05-17 18:14) [16]

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


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

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


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

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


 
sniknik ©   (2006-05-18 11:40) [19]

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

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


 
stud ©   (2006-05-18 13:47) [20]

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

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

ничего.


 
sniknik ©   (2006-05-18 15:07) [21]

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


 
ANB ©   (2006-05-18 15:32) [22]

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

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

> when """+"Ю"""+" then


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


 
stud ©   (2006-05-18 15:40) [23]


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

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


 
sniknik ©   (2006-05-18 15:47) [24]

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

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


 
ANB ©   (2006-05-18 15:49) [25]

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


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

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


 
MsGuns ©   (2006-05-18 17:55) [26]

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



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.054 c
15-1147261429
Photus
2006-05-10 15:43
2006.06.04
Борьба с экспортом в Borland Builder


2-1147672818
Tempora
2006-05-15 10:00
2006.06.04
Как получить список папок и подпапок


15-1147251017
boriskb
2006-05-10 12:50
2006.06.04
Не пойму - это смешно или грустно?


8-1136239895
DoSpyRap
2006-01-03 01:11
2006.06.04
ПЕРИОДИЧЕСКИЙ СОХРАНЕНИЕ ЭКРАНА


4-1136275157
dust
2006-01-03 10:59
2006.06.04
Однозначно идентифицировать установленную ОСь