отсутствует сообщение об ошибке оператора или точка с запятой - PullRequest
0 голосов
/ 25 марта 2012

привет, я получил SQL со следующим кодом,

ВЫБЕРИТЕ СУММУ (Travel_Cost)
ОТ путешествия
ГДЕ Job_ID =: mcode

, чтобы позволить пользователю ввести значение из компонента редактирования, который передается в SQL, я также получил следующий код,

procedure TfrmExpenses.Button3Click(Sender: TObject);      
begin          
  ADOQuery1.active:=false;      
  ADOQuery1.Parameters('mcode').AsString:=Edit1.Text;      
  ADOQuery1.active:=true;      
end;

Я продолжаю получать сообщение об ошибке

"отсутствует оператор или точка с запятой"

когда я пытаюсь скомпилировать, какие-либо предложения?

1 Ответ

1 голос
/ 26 марта 2012

Хотя класс TParameters имеет свойство по умолчанию, он принимает Integer, а не string.

Если вам известен индекс параметра, который вы можете использовать:

var I: Integer;
....
ADOQuery1.Parameters[I].AsString := Edit1.Text;

В противном случае вам нужно использовать:

ADOQuery1.Parameters.ParamByName('mcode').AsString := Edit1.Text;

Примечание: вы должны избегать использования любой из функций *ByName (ParamByName, FieldByName и т. Д.)Зацикливайтесь, если можете, потому что каждый вызов выполняет линейный поиск в базовой коллекции, пока не найдет совпадение.Не очень актуально в данном конкретном случае, но стоит принять во внимание.

...