Delphi 中 ADOQuery 中带引号的字符串出错:`参数对象定义不正确。提供的信息不一致或不完整。`

Error on Quoted String within ADOQuery in Delphi: `Parameter object is improperly defined. Inconsistent or incomplete information was provided.`

我在使用以下 ADOQuery 引用字符串 %ABC%:

时遇到问题
adoQuery1.SQL.Clear;
adoQuery1.SQL.Text := 'SELECT * FROM MyDB.MyTable WHERE MyField LIKE ''''%ABC%'''' ';
adoQuery1.ExecSQL;
adoQuery1.Close;
adoQuery1.Open;

我也尝试传递以下参数但没有成功:

adoQuery1.SQL.Clear;
adoQuery1.SQL.Text := 'SELECT * FROM MyDB.MyTable WHERE MyField LIKE :Param1 ';
aqBCCombi.Parameters.ParamByName('Param1').Value := '%ABC%';
adoQuery1.ExecSQL;
adoQuery1.Close;
adoQuery1.Open;

这是我得到的错误:Parameter object is improperly defined. Inconsistent or incomplete information was provided.

这里有人知道如何处理 ADO SQL 文本中带引号的字符串吗?感谢任何帮助。

这段代码与你的非常相似,适合我:

if Pos('%', Article) > 0 then begin
    SQLCmd := 'SELECT d0301000.id_partstd ' +
              'FROM d0301000 ' +
              'WHERE (d0301000.Type = ''AF'') ' +
                'AND (d0301000.Part_Nbr LIKE :Part_Nbr)';
    ADOQuery1.SQL.Text := SQLCmd;
    ADOQuery1.Parameters.ParamByName('Part_Nbr').Value := Article;
end
else begin 
    .....   // Code removed for simplicity
end;
ADOQuery1.Open;

您正在使用 ExecSQL 作为 SELECT 语句。将其替换为 Open.