qry1.close;
 qrey1.sql.text := 'select * for 你的表 where   '+
    '字段1='''+edit1.text+'''';//字段1的类型为字符型,否则为
                             '字段1='+edit1.text;
 qry1.open;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Query1.SQL.Clear;
      Query1.SQL.Text := 'select * from xxx where aa = ' + 
                          QuotedStr(Edit1.Text);        
                          // xxx/aa 是你要查询的表和字段
      Query1.Open;  
    end;
      

  2.   

    for i:=0 to query1.FieldCount-1
    IF query1.Locate(query1.fields[i].value,edit1.text,[loPartialKey]) THEN exit;
      

  3.   

    Function Funname(Query:Tquery):Boolean;
    var i:integer;
    begin
      i:=0;
      result:=false;
      for i:=0 to query1.FieldCount-1
      IF query1.Locate(query1.fields[i].FieldName,edit1.text,[loPartialKey]) THEN 
      begin
        result:=true;
        exit;
      end;
      result:=false;
    end;
      

  4.   

    假設查詢Employee表中的LastName欄位
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      query1.SQL.Clear;
      query1.SQL.Add('select * from employee where lastName like '+
                     QuotedStr(edit1.text+'%') );
      query1.Open;
    end;如果被查詢表的記錄不是非常多的話,用Filter效果會好很多
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      query1.Filter:='lastName='+QuotedStr(Edit1.Text+'*');
      query1.Filtered:=true;
    end;
      

  5.   

    同意 erp2(天涯劍) 的意见,如果每输入一个字符都close或open TQuery的话,一旦数据量到了大的程序,速度将会相当的慢,犹其用在网络中时更会如此
      

  6.   

    最好还是不要用Locate,因为那样会把全部记录取回来。
    如果在网络环境下会记录数目很多会很慢很慢~~~~
      

  7.   

    可是如果是每输入一个字符都关闭再打开数据库应该比locate更慢,在这种情况下,也许在本地建立一个服务器数据库的副本是个比较折中的方法