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
.
我在使用以下 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
.