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

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

ADOQuery.Parameters [D6, WinXP]


ilga ©   (2006-03-17 12:04:00) 

Доброе весеннее утро, Мастера!
Надоумте, пожалуйста:
формирую текс запроса и паралельно даю значения параметрам TADOQuery
SQL.Add(',@Param1=:Param1');
Parameters.ParamByName('Param1').Value := edit.text;
на очередное значение или прибавление куска запроса ошибка:
"Application uses a value of wrong type for current operation"
причем она возникает в разных местах, т.е. блуждающая - то работает, то нет.
Проверяю всё, не вижу что не так может быть :(.
Подскажите, что можно сделать?


ЮЮ   (2006-03-20 09:53:00) [1]


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


Параллельность здесь неуместна.

SQL.Add(',@Param1=:Param1');
Parameters.ParamByName('Param1').Value := edit2.text;
SQL.Add(',@Param2=:Param2');

после этой строки Parameters, ИМХО, будут пересозданы, значение параметра Param1 неопределено и, как следствие этого, "Application uses a value of wrong type for current operation"

Сначала сформируй запрос полностью, затем заполняй параметры.


msguns   (2006-03-17 13:28:00) [2]

если не спасло, то разруха "в голове", т.е. в самом запросе. Текст которого надо взять из дебагеру и запастить сюдой


ilga   (2006-03-17 13:28:00) [3]

ок, спасибо за советы :)


ilga   (2006-03-17 13:26:00) [4]

пробовала по всякому
не спасло

sniknik - это что? сорри за серость :(


msguns   (2006-03-17 13:26:00) [5]

>Anatoly Podgoretsky ©   (17.03.06 13:24) [8]

не умничай ;)


msguns   (2006-03-17 13:26:00) [6]

>ilga   (17.03.06 13:26) [9]
>sniknik - это что? сорри за серость :(

Не ЧТО, а КТО.
Мастер. С большой буквы.


Anatoly Podgoretsky   (2006-03-17 13:24:00) [7]

И получишь ABC


msguns   (2006-03-17 13:23:00) [8]

Если все же хоцца работать с TADOQuery, надо избегать кода типа
SQL.Add('A');
SQL.Add('B');
SQL.Add('C');
...
заменяя его на

SQL.Text := 'A'+'B'+'C'


ilga   (2006-03-17 13:21:00) [9]

спасибо :)


msguns   (2006-03-17 13:20:00) [10]

Это глюк самого TADOQuery.
Лечится заменой "кверика" (TADOQuery) на "командик" (TADOCommand) или "датасетик" (TADODataSet),а также внимательным чтением статей sniknik на этом форуме


ilga   (2006-03-17 13:18:00) [11]

еще поясню проблему:
приложение представляет собой n-ое кол-во закладок
пользователь редактирует некоторые из них,
для сохраниния ин-фы, я пробегаю по закладкам и формирую текст запроса, который включает в себя вызов различных процедур
когда делаю простой подстановкой значения в текст кверика('Param1='+'555') работает без проблем

а с использованием параметров траблы


ilga   (2006-03-17 13:10:00) [12]

ADOQuery.ParamCheck = true

параметров много и они разных типов

текс запроса и параметры формируются (создаются) в ран-тайме - для всех измененных значений.

получается что  кверик не есть длинный текс + параметры

ошибка появляется только на определенную длину кверика :(


Ega23   (2006-03-17 12:41:00) [13]


> Шо это?
> Где текст запроса?


По-видимому, это часть запроса, точнее часть текста выполнения ХП.

По сабжу: а какой тип у параметра? ftString? Как создаёшь параметр - в ран-тайме или в дизайн-тайме? Чему равно свойство ADOQuey.ParamCheck?


Megabyte   (2006-03-17 12:38:00) [14]

TADOQuery.SQL.Add(',@Param1=:Param1');
Шо это?
Где текст запроса?


Наверх

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