{是空格问题吧?} ADOQ.SQL.Add('select * from BB.dbo.BC where [BBName]='''+YW+''' and [BBCC]='''+BT+'''');
不好意思,没审题,你试试这样看行否?ADOQ.SQL.Add('select * from BB.dbo.BC where [BBName]='+QuotedStr(YW)+'and [BBCC]='+QuotedStr(BT));
正确的查询SQL是: select * from BC where BBCC='H''0022'Delphi代码中 BT:='H''0022'; --设计时,中间为2个冒号 这样,BT在运行时的值才是'H'0022' --运行时,中间就变成一个冒号了 如果楼主赋值正确的话 楼上GDTOPONE的就是正解拉: ADOQ.SQL.Add('select * from BB.dbo.BC where [BBName]='+QuotedStr(YW)+'and [BBCC]='+QuotedStr(BT)); 关键在于用了QuotedStr函数如果你不用QuotedStr这个函数的话 Delphi代码中 BT:='H''''0022'; --设计时,中间为4个冒号 ... ADOQ.SQL.Add('select * from BB.bdo.BC where [BBName]='''+YW+'''and [BBCC]='''+BT+''''); ... 这样也是可以的
类似问题的解决办法:碰到这种问题,一般自己把SQL语句输出,就能很容易找到自己是哪里错了
在adoquery中有一个参数paramCheck 把这个改成 false试一下.
但最好这样写,用参数形式 with adoquery2 do begin close; //sql.Text := 'select * from treetable where unitname='''+edit1.text+''''; sql.Text := 'select * from treetable where unitname=:unitname'; parameters.parambyname('unitname').value :=edit1.text; open; end;
{是空格问题吧?}
ADOQ.SQL.Add('select * from BB.dbo.BC where [BBName]='''+YW+''' and [BBCC]='''+BT+'''');
BT:='H''0022'; --设计时,中间为2个冒号
这样,BT在运行时的值才是'H'0022' --运行时,中间就变成一个冒号了
如果楼主赋值正确的话
楼上GDTOPONE的就是正解拉:
ADOQ.SQL.Add('select * from BB.dbo.BC where [BBName]='+QuotedStr(YW)+'and [BBCC]='+QuotedStr(BT));
关键在于用了QuotedStr函数如果你不用QuotedStr这个函数的话
Delphi代码中
BT:='H''''0022'; --设计时,中间为4个冒号
...
ADOQ.SQL.Add('select * from BB.bdo.BC where [BBName]='''+YW+'''and [BBCC]='''+BT+'''');
...
这样也是可以的
with adoquery2 do
begin
close;
//sql.Text := 'select * from treetable where unitname='''+edit1.text+'''';
sql.Text := 'select * from treetable where unitname=:unitname';
parameters.parambyname('unitname').value :=edit1.text;
open;
end;