我已经用了一个ADOQuery、datasource、DBGrid连接数据库显示了两张表(A、B)的所有内容,其中还有计算出的字段。
我现在想要在另一个窗体显示这两张表的某些记录,能不能仍然用这三个控件?
  
 表A                  表B
 NO   NAME            a    b     c                 
 1    li              1    SH    28
 2    zhang           2    NJ    32
 3    wang            3    BJ    35
我前面的SQL语句是:
 Select A.*,B.b,B.c 
   from A,B 
 where A.NO=B.a
  
  现在新的窗体上有一个EDIT控件用来查询的。现在我想根据Edit查询,Edit的作用是输入NO号我显示相应记录。我该怎么写?长了点,麻烦大家了!谢谢先

解决方案 »

  1.   

    uses 你的单元文件名你的窗体名.你的ADOQuery.Locate('字段名',Edit.Text,[])
      

  2.   

    1 用sql
    query1.sql.add('Select A.*,B.b,B.c from A,B where A.NO=B.a and A.No = ''' + edit1.text +'''');
    2 用filter
    query1.filtered:=false;
    query1.filter:= 'N0 = ' + edit1.text;
    query1.filtered:=true;
      

  3.   

    ADOQuery.Locate('no',strtoint(trim(Edit.Text)),[])
      

  4.   


      我写了 ADOQuery.Locate('no',strtoint(trim(Edit.Text)),[])怎么没有反应啊?
    我在新窗体里也用了一个DBGRID,我已经按  esu(ESU)的说法 uses 我的单元文件名,
    并且把DBGRID的DATASOURCE指向了那个单元的DATASOURCE,但是结果是新窗体的DBGRID里显示了所有记录,并没有起到查询的效果。
     是不是因为我没有把ADOQUERY CLOSE 啊?
      

  5.   

    with YourQueryName do
       begin
       close;
       sql.clear;
       sql.Add('Select A.*,B.b,B.c from A,B');
       sql.Add('where (A.NO=B.a) and (A.No=veryNO)');
       unprepare;
       parambyname('veryNO').AsString:=Edit1.text;
       prepare;
       open;
       end;
      

  6.   

    //如果A.NO、B.a为整型字段,则parambyname('veryNO').AsString:=Edit1.text须改作:
    parambyname('veryNO').AsInteger:=strtoint(Edit1.text);
      

  7.   

    你可以建一示图(取名为www),将2个表关联起来。然后可以将这一示图看成一个数据表
    利用参数来传递值
       with adoquery1 do 
           beign
               close;
               sql.clear;
               sql.add('select * from www where No=:No');
               parameters.items[0].datatype:=ftinteger;
               parameters.items[0].value:=strtoint(edit1.text);
               open;
               ....
           end;
      

  8.   

    to  dpixl(寒寒) 
     问题还没有解决,没有parambyname这个属性,而且parambyname不支持asstring。不过还是谢谢大家!
      

  9.   

    对于ADOQUERY要这样用
    parameters.parambyname('field').asstring才行