请问这条SQL 语句有错误吗? 为什么刚开始录入 '佳宝' 什么也查询不到,可录入 '夏利' 查询出来之后,再录入 '佳宝' 也能查询出来,不解 !!!  我是再ComboBox_chexing 的onchange 事件中写的语句。ADOQuery_Select 中的SQL语句如下:SELECT  a.*
FROM (SELECT yphuaxuemingcheng,yppinming,ypjinjia,yppihao,yppinyinma,idno      FROM Y_baseinfo
 
      where  (ypflag='是') and  (yppihao  like :yppihao)  and  (yppinyinma  LIKE :pinyinma  or
 
      yppinming LIKE :yppinming or yphuaxuemingcheng like :ypbianma)
                                
      GROUP BY yphuaxuemingcheng,yppinming,ypjinjia,yppihao,yppinyinma,idno) a Onchange 代码如下:procedure TForm1.ComboBox_chexingChange(Sender: TObject);
begin
with    ADOQuery_Select       do
begin
        Close;
        Parameters.ParamByName('pinyinma').Value:='%'+Trim(Edit_yaopindaima.Text)+'%';
        Parameters.ParamByName('yppinming').Value:='%'+Trim(Edit_yaopindaima.Text)+'%';
        Parameters.ParamByName('ypbianma').Value:='%'+Trim(Edit_yaopindaima.Text)+'%';
        Parameters.ParamByName('yppihao').Value:='%'+Trim(ComboBox_chexing.Text)+'%';
        Open;
end;

解决方案 »

  1.   

    代码没有问题.这个我感觉是delphi的bug.
    特别是用'%'作为参数传递时会出现莫名其妙的问题.
    改成下面这种方面即可:ADOQuery_Select:='SELECT  a.* FROM (SELECT yphuaxuemingcheng,yppinming,ypjinjia,yppihao,yppinyinma,idno FROM Y_baseinfo'
    +'where  (ypflag=''是'') and  (yppihao  like '
    +quotedstr('%'+Trim(Edit_yaopindaima.Text)+'%')+..
      

  2.   

    我感觉吧,你把SQL.Clear一下比较好!这样代码就比较完善了,你觉得呢?
      

  3.   

    很麻烦的问题,SQL应该没有什么问题
      

  4.   

    个人习惯还是用Format('',[])......不过代码看起来没有什么问题,建议(ypflag='是')还是少这样用的吧