しばらくの間、Lazarus でパラメーターを使用して SQL クエリを使用してきましたが、このエラーに悩まされています。それはかなり基本的なようですが、私はただ迷っています。
次の Lazarus Pascal コードがあります。
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 は日付コントロールです。
多分私は何かを監視しています。何か案が?ありがとう!