Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > TADOQuery |
Автор: Vitus 1.8.2002, 13:32 | ||||||||
Help me! В обычном TQuery параметры объявлял так:
А как объявляются параметры в TADOQuery? Пробую так:
и так:
и так:
но постоянно выходят ошибки типа: "Parameter object is improperly defined. Inconsistent or incomplete information was provided." Как все-таки нужно? |
Автор: Vit 1.8.2002, 15:23 |
Надо так: ADOQuery1.Parameters.ParamByName('xxx').Value := xxx; Учти что к моменту определения параметра должно быть следующее: 1) Задан Connection/ConnectionString 2) Параметры должны быть Parsed - если ты кверю пишешь в дизайне, то всё путём, если в коде, то надо добавить: ADOQuery1.Parameters.ParseSQL(ADOQuery1.sql.text, true) |
Автор: Vitus 1.8.2002, 15:47 | ||
Вот как именно выгдядит код:
Но... все-таки ошибка: "Parameter object is improperly defined. Inconsistent or incomplete information was provided" Так что дело в чем-то другом... ![]() |
Автор: Vit 1.8.2002, 15:49 |
2 Ошибки: 1) ParseSQL ставить надо перед параметрами 2) Нельзя применять один параметер дважды, замени второй ":par1" на ":par2" и присвой его тоже |
Автор: Vitus 1.8.2002, 16:08 |
1. О! Второй параметр заменял ":par1" на ":par2" и присваивал его тоже. А почему в ADO нельзя один и тот же параметр использовать в запросе несколько раз, а присваивать ему значение только один раз![]() 2. От ParseSQL ничего особо не зависит, по крайней мере и так работает, если с 2-мя параметрами. |
Автор: Vit 1.8.2002, 16:50 |
1. Это вопрос к микрософту, так они сделали дизайн 2. Если тебя устроит вероятность появления ошибки типа "Parameter was not found" или что-то подобного примерно в 20-30% можешь эту строку не писать. Я не знаю почему иногда она нужна, иногда нет, может это зависит от ADO провайдера, может от сложности квери, может от погоды, но если ты присваиваешь текст квери в коде её написание позволяет на 100% избавится от ошибок связанных с неправильным распознаванием параметров, а то что это и так работает, ну так это ж не всегда. |