返回数据集用OPEN
不返回用EXECSQL;
你的应该用OPEN,把EXECSQL去掉就应该可以了。

解决方案 »

  1.   

    还有,变参必须用LIKE :变量;比如
    select * from employee where lastname like %:yourparam% 
    然后用QUERY1.Parameters.ParamByName('YOURPARAM')
      

  2.   

    try it:
    query.Close;
    query.SQL.Clear;
    query.SQL.Add('select * from employee where lastname like "%'
    +trim(edit1.Text)+'%"');
    query.Open;or try it:
    query.Close;
    query.SQL.Clear;
    query.SQL.Add('select * from employee where lastname like '+#39
    +'%'+trim(edit1.Text)+'%'+#39);
    query.Open;
      

  3.   

    楼上说的是VB的用法,在DELPHI里不可以的,呵呵
      

  4.   

    多谢: realdigua(digua) ,你的方法可行。
    可惜outer2000(天外流星) 说得不够详细,没有完整的代码,我按你的方法做了,可是不行,可否再说得详细点,否则我要送分了,呵呵
      

  5.   

    realdigua(digua) 说的对,不过的把'try it'和'on try if '去掉,换成try ...finally或try...exept.
      

  6.   

    看:query.Close;
    query.SQL.Clear;
    query.SQL.Add('select * from employee where lastname like :x_like');
    query.parambyname('x_like').asstring:='%' + trim(edit1.text) + '%';
    query.Open;肯定行!
    还有 select 要用open才能返回数据,execsql只用在delete,update等不返回数据的操作。
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    query.Close;
    query.SQL.Clear;
    query.SQL.Add('select * from employee where lastname like "%'); //多了#13#10
    query.SQL.Add(trim(edit1.Text));
    query.SQL.Add('%"'); //#13#10多了
    query.ExecSQL;
    query.Open;
    end;//SQL是TStrings类型
    //Add('?');是加一行,不是加个字符
      

  8.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with query do
      begin
        Close;
        Sql.Text := ''select * from employee where lastname like + #39 + '%' + Trim(Edit1.Text) + '%" + #39;
        //Prepare;
        Open;
      end;
    end;
      

  9.   

    更正一下:
    Sql.Text := 'select * from employee where lastname like ' + #39 + '%' + Trim(Edit1.Text) + '%" + #39;