1、代码应该写在OnChange事件中。
2、修改这句
Query1.sql.Add('select * from biolife.db where Category='+str);

解决方案 »

  1.   

    select * from biolife.db where Category = '''+cmb.text+''''
    少用一个变量
      

  2.   

    我想应该用参数传递begin
     
      query1.close ;
      query1.sql.Clear ;
      query1.sql.Add ('select * from biolife.db where Category=:str');
      query1.parameters[0]:=cmb.text;
      query1.prepared:=true;
      query1.open;end;
      

  3.   

    晕....可不能这样写的哦
      str:=cmb.text;
      memo1.text:='select * from biolife.db where category='''+str+''''
    query1.close ;
      query1.sql.Clear ;
      query1.sql.Add (memo1.text);
      query1.open;
      

  4.   

    不管你怎么写,你可以用showmessage(sqlstr) 来查看你的sql语句是否正确!
      

  5.   

    改成这样:
    procedure TForm1.cmbClick(Sender: TObject);
    var
      str:string;
    begin
      str:=cmb.text;
      query1.close ;
      query1.sql.Clear ;
      query1.sql.Add ('select * from biolife.db where Category=' + str);
      query1.active:=true;end;
      

  6.   

    同意楼上答案,或者改写如下:
    procedure TForm1.cmbClick(Sender: TObject);
    var
      str:string;
    begin
      str:=cmb.text;
      query1.close ;
      query1.sql.Clear ;
      query1.sql.Add ('select * from biolife.db where Category=:www');
      query1.parameters[0]:=str;
      query1.open;end;