Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.058 c
15-1147345875
Slava812
2006-05-11 15:11
2006.06.04
Цвета в Delphi


15-1147356788
Петр
2006-05-11 18:13
2006.06.04
Delphi


2-1148118517
Мурзилка
2006-05-20 13:48
2006.06.04
InputBox


15-1146854038
Постоялец
2006-05-05 22:33
2006.06.04
Освоение 1C


2-1147931585
Tempora
2006-05-18 09:53
2006.06.04
Application.terminate а программа продолжает работать





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский