2016-06-27 4 views
1
ADOQuerySelect.Close; 
    ADOQuerySelect.SQL.Add(' AND (дата_заказа between #'+dat+'# and #'+da+'#)'); 
    if ComboBox6.Text <> '' then 
    begin 
    ADOQuerySelect.Parameters.ParamByName('Name').Value := ComboBox6.Text ; 
     ADOQuerySelect.SQL.Add(' AND (Наименование = :Name)'); 
    end; 
ADOQuerySelect.Open; 

Я использую Delphi 2007, MS Access. И я не знаю, как работать с параметрами. В этом коде у меня ошибка: параметр Имя не найден. Я пробовал много других вариантов кода, но все они не работают. Я добавляю имя параметра через GUI с типом данных ftstring;Delphi 2007 Adoquery Параметры не работают

ответ

1

В инспекторе объектов ADOQuerySelect должен иметь «Имя» среди списка параметров.

Вы также можете использовать следующий код для создания параметра «Имя»:

with ADOQuerySelect.Parameters.AddParameter do 
begin 
    Name := 'Name'; 
    DataType := ftString; 
end; 
+0

Это, в инспекторе объектов –

+0

И есть ли «имя» в таблице SQL? –

+0

нет, он должен быть в sql-таблице? –

3

Изменения SQL в коде очищает существующие параметры, так что нет никакого параметра называется «Name» в то время, вы пытаетесь установите его значение. Затем вы создаете параметр Name, но уже слишком поздно.

Изменить порядок ваших утверждений:

ADOQuerySelect.Close; 
ADOQuerySelect.SQL.Add(' AND (дата_заказа between #'+dat+'# and #'+da+'#)'); 
if ComboBox6.Text <> '' then 
begin 
    ADOQuerySelect.SQL.Add(' AND (Наименование = :Name)'); 
    ADOQuerySelect.Parameters.ParamByName('Name').Value := ComboBox6.Text ; 
end; 
ADOQuerySelect.Open; 

Вы должны использовать параметры все ваши замены, BTW. Пусть драйвер базы данных обрабатывает конверсии и форматы дат и значения кавычек и все это для вас.

Смежные вопросы