Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Внизстранности с параметром 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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.043 c