关于使用ADOQuery控件动态执行Sql时的一个小问题,请各位大侠帮帮小妹,谢谢!!!!!(100分)

  • 主题发起人 主题发起人 miss9642
  • 开始时间 开始时间
M

miss9642

Unregistered / Unconfirmed
GUEST, unregistred user!
adoquery1.SQL.Add('SELECT RJH.MODEL_NO,');
adoquery1.SQL.Add('FROM RJH ');
adoquery1.SQL.Add('WHERE RJH.FZJGH = "0008" ');
以上是我所写的动态执行SQL语句的样本, 如果我写为
select rjh.model_no from rjh where rjh.fzjgh = '0008' 直接写在adoquery1的SQL属性里就
完全没任何问题,但写成顶上所写的动态语句便会出错,我知道是 adoquery1.SQL.Add('WHERE RJH.FZJGH = "0008" ');
这一句出了问题, 单引号里面加双引号,使加在adoquery1的sql属性里的语句变成了:
select rjh.model_no from rjh where rjh.fzjgh = "0008",(即0008该用单引号变成了双引号),
但小妹不知道该如何处理这种错误,请各位大侠告诉我正确的使用方法,谢谢各位!!!!!!!!!!


 
有个变通的方法,就是用参数。

adoquery1.SQL.Add('WHERE RJH.FZJGH =:Para1 ');
adoquery1.Parameters.ParamByName('Para1'):='0008';
 
adoquery1.SQL.Add('SELECT RJH.MODEL_NO,');
adoquery1.SQL.Add('FROM RJH ');
adoquery1.SQL.Add('WHERE RJH.FZJGH = ''0008'';');
所有字符串中的单引号用两个单引号代替
 
同意SENV我也一直这样用
 
to:kanny_chen

SENV <>SEVN
 
adoquery1.SQL.Add('SELECT RJH.MODEL_NO');
adoquery1.SQL.Add('FROM RJH ');
adoquery1.SQL.Add('WHERE RJH.FZJGH ='+QuotedStr('0008'));

 
不知道是不是笔误,我看不是出现第三句
第三句这样写应该是可以的
而第一句多了一个逗号。你自己看一看是不是?
 
adoquery1.SQL.Add('SELECT RJH.MODEL_NO ');
adoquery1.SQL.Add('FROM RJH ');
adoquery1.SQL.Add('WHERE RJH.FZJGH = ''0008''');
全部是单引号
 
应该写成:adoquery1.SQL.Add('WHERE RJH.FZJGH = ''0008'' ');
 
不是双引号,应该写成两个单引号。
adoquery1.SQL.Add('WHERE RJH.FZJGH = ''0008'' ');
 
谢谢各位,ysai说的方法的确有效!谢谢
SEVN说的方法不知道为什么一运行程序就报错:left side cannot be assigned to
再次感谢各位!
 
第一句多了一个逗号,第三句双引号没问题。
 
用参数查询吧:
adoquery1.SQL.Add('SELECT RJH.MODEL_NO,');
adoquery1.SQL.Add('FROM RJH ');
adoquery1.SQL.Add('WHERE FZJGH =:Para1 ');
adoquery1.Parameters.ParamByName('Para1').Value:='0008';
 
决对 支持renyi
这样才可真正实现动态查询。
用字符串的方法,有点老套了,而且条件一多字符需要调试容易搞错。
用参数就可很好的解决
 
谢谢各位!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部