我在查询事件中写道:
 if dxdbpickedit3.text='订单帐号' then
 begin
   sqlstr:='select * from yudin where 订单帐号='+''''+edit1.text+'''';
   with query1 do 
   begin
   colose;
   sql.clear;
   sql.add(sqlstr);
   open;
   end;
 end;
if dxdbpickedit3.text='联系人' then
 .....
//在dbgird中显示结果,在dxdbpickedit中选择欲查询的项如‘订单帐号’,‘联系人’等。在edit1中输入欲查询的值。
程序编译能通过,但是查询结果没有变化。不知是哪的错?

解决方案 »

  1.   

    可能Gbgrid1没有连接datasource1,datasource1没有连接query1
      

  2.   

    是有点奇怪。但更不明白为什么这一句也可以通过编译:   colose;
      

  3.   

    sqlstr:='select * from yudin where 订单帐号='''+edit1.text+'''';
      

  4.   

    agree with sunny_2001
    sqlstr:='select * from yudin where 订单帐号="'+edit1.text+'"';
      

  5.   

    呵,还可能要先去掉Edit的空格.所以这一句:sqlstr:='select * from yudin where 订单帐号='+''''+edit1.text+'''';
    是否应该为
    sqlstr:='select * from yudin where 订单帐号='+''''+trim(edit1.text)+'''';
      

  6.   

    其实这两句:
    sqlstr:='select * from yudin where 订单帐号='+''''+edit1.text+'''';
    sqlstr:='select * from yudin where 订单帐号='''+edit1.text+'''';
    都是一样的,并没有错.
      

  7.   

    with query1 do
    close;
    sql.clear;
    sql.text:='select * from yudin where 订单帐号=:aa';
    parambyname('aa').asstring:=edit1.text;
    open;
    试一试,不知道行不行(我是个新手,如果错了请不要见笑)。
      

  8.   

    不好意思,忘记了,还要加上trim(edit1.text)
      

  9.   

    Gbgrid控件连接的datasuorse是不是连接到了table控件上??要连接到你使用的查询控件query上撒
      

  10.   

    是连接query的。我用的是sql server表,