你有一个带有以下代码的SQL,
SELECT SUM(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;
我继续收到错误消息
“缺少运算符或分号”
当我尝试编译时,有什么建议吗?
答案 0 :(得分:1)
虽然TParameters
类确实有默认属性,但它接受Integer
,而不是string
。
如果您知道可以使用的参数索引:
var I: Integer;
....
ADOQuery1.Parameters[I].AsString := Edit1.Text;
否则你需要使用:
ADOQuery1.Parameters.ParamByName('mcode').AsString := Edit1.Text;
注意:如果可以的话,您可以避免在紧密循环中使用任何*ByName
函数(ParamByName
,FieldByName
等),因为每个调用执行线性搜索在底层集合上,直到找到匹配项。在这个特殊情况下并不真正相关,但值得考虑。