一段时间以来,我一直在 Lazarus 上使用带有参数的 SQL 查询,但我被这个错误难住了。这似乎很基本,但我只是迷路了。
我有以下拉撒路帕斯卡代码:
strSQL:= 'Select "fCo", "fcFarmID", "fcFlockCode", ' +
'"fcWeekEnding","fcAge", ' +
'(:"pDate" - "fcWeekEnding")/7 as "AgeWeeks" ' +
'From (select "fCo", "FarmID", "FarmName" from "tblFarms" Where "fCo" = :"pp") as f Left Join "tblFlockCodes" ' +
'On "FarmID" = "fcFarmID" ';
dbQuery_FlockCodes.SQL.Text:= strSQL;
dbQuery_FlockCodes.Params.ParamByName('pDate').AsDate := dtWeekEndingDate.Date;
dbQuery_FlockCodes.Params.ParamByName('pp').AsString:= lstCo.Text;
程序在运行最后一行(带参数 pp)时报告运行时错误。错误是:
未找到参数 pp。
我有多个参数的查询,但没有问题。就这一个。我什至尝试重命名参数名称,但我得到了同样的错误。
如果我使用字符串文字代替参数或插入如下连接的字符串,它就可以正常工作。
strSQL:= 'Select "fCo", "fcFarmID", "fcFlockCode", ' +
'"fcWeekEnding","fcAge", ' +
'(:"pDate" - "fcWeekEnding")/7 as "AgeWeeks" ' +
'From (select "fCo", "FarmID", "FarmName" from "tblFarms" Where "fCo" = ' + QuotedStr(lstCo.Text) + ' ) as f Left Join "tblFlockCodes" ' +
在上面的最后一个示例中,lstCo 是一个下拉列表框。在整个代码中,dtWeekEndingDate 是一个日期控件。
也许我正在监督一些事情。任何想法?谢谢!