-1

您好,我得到了一个带有以下代码的 SQL,

SELECT SUM (Travel_Cost)
从 Travel
WHERE Job_ID=:mcode

为了允许用户从传递给 SQL 的编辑组件中输入一个值,我也得到了以下代码,

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

我不断收到错误消息

“缺少运算符或分号”

当我尝试编译时,有什么建议吗?

4

1 回答 1

1

虽然TParameters该类确实有一个默认属性,但它接受一个Integer,而不是一个string

如果您知道参数的索引,您可以使用:

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

否则你需要使用:

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

注意:如果可以的话,您将希望避免在紧密循环中使用任何*ByName函数(ParamByNameFieldByName等),因为每个调用都会对基础集合执行线性搜索,直到找到匹配项。在这种特殊情况下并不真正相关,但值得考虑。

于 2012-03-26T15:40:19.230 回答