简单的例子假如有一个 edit1框
和一个dbgrid1,datasource,table1,botton,query1
dbgrid 和datasource和table,已经相互好,连接好表
表名叫airplane,字段有no,classcification,type
想点击botton,从表中选出type的值为edit输入的值的记录,代码该这样写吗?procedure TForm1.Button1Click(Sender: TObject);
begin
  query1.Close;
  query1.SQL.Clear;
  query1.SQL.Add('select * from airplane where 机型='+edit1.Text);   query1.Prepare;
   table1.Active:=false;
   dbgrid1.DataSource:=datasource1;
   query1.Open;
   table1.Active:=true;
end;

解决方案 »

  1.   

    query1.SQL.Add('select * from airplane where 机型='''+edit1.Text)+'''';
    or 
    sql.text:='select * from airplane where 机型='''+edit1.Text)+''''
      

  2.   

    dbgrid1.DataSource:=datasource1;不必每次都做,table1看不出和query1有什么关系,对不对试一试就知道了
      

  3.   

    只要有5个组建就可以了,分别为:edit1\dbgrid1\datasource\botton\query1,
    dbgrid1和datasource连接,datasource和query1连接,按钮的单极事件如下:
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('select * from airplane where type=:Atype');
    query1.ParamByName('Atype').AsString:=Trim(edit1.Text);
    query1.Open;
    其中Atype为设置的参数,可以任意起名字
      

  4.   

    to : myemwjb    为什么要多家两对 ''''?to  
     回复人: dickeybird888 
    在delphi 的 help里面 看不懂parabyname的解释,可不可以具体具体解释
    query1.SQL.Add('select * from airplane where type=:Atype');
    query1.ParamByName('Atype').AsString:=Trim(edit1.Text);
    这两句?
      

  5.   

    两对''''时SQL语句中的引号,如select * from table where name='dd' 
    如果不加就变成 select * from table where name=dd
    至于这一句
    query1.SQL.Add('select * from airplane where type=:Atype');
    query1.ParamByName('Atype').AsString:=Trim(edit1.Text);好像应该改成
    Query.parameters.paramvalues['atype'].asstring:= Trim(edit1.Text); 
    就是将edit1里面的字符取出来,去掉前后的空格,然后付值给Atype,如果edit1里面输入dd,那么sql语句就是select * from airplane where type=dd
      

  6.   

    还没有找到一本好书啊
    都是那些第一张简介,特点,
    第二章,讲常用组件
     3   数据库组件
     总之很粗糙,我也想找一本专门讲delphi数据库和sql编程的书啊