最近学习adoquery,发现和adotable有很大的不同,都说adoquery灵活,但我掌握不好。
比如,我不在设计期间指定SQL属性,在程序代码中,我使用经典的数据库操作代码:
adoq1.close;
adoq1.sql.clear
adoq1.sql.add(select * from table1,table2 where .......) //返回有6个字段,假设的说
adoq1.open;我要将执行这代码,把结果显示在DBedit或者DBGrid中,在属性设置栏里是不可能设置Datafield属性的,(它不能象adotable那样,设置active为true后就可以设置各个字段的值和DBedit对应)这样情况下,怎么样使6个DBedit各自对应返回来记录的6个字段呢?或者对应到DBgrid的6个列?上面的那个问题我一直都没解决好,一直都只能在设计期间就在属性栏里将SQL输好。。郁闷.如果上面的那个问题解决了,怎么将返回的各个字段的值依次赋给各个edit控件??刚学,书上这些都没江,都是讲怎么在属性栏里设置SQL语句,数据显示控件在这样情况下和数据集连接的问题,希望哪位大虾解决下我的问题,谢谢!

解决方案 »

  1.   

    我要将执行这代码,把结果显示在DBedit或者DBGrid中,在属性设置栏里是不可能设置Datafield属性的,(它不能象adotable那样,设置active为true后就可以设置各个字段的值和DBedit对应)这样情况下,怎么样使6个DBedit各自对应返回来记录的6个字段呢?或者对应到DBgrid的6个列?可以的,你在query的sql里边在设计的时候写,select * from tablename,然后active 设置为true,就可以了设置datafield了,你在程序里修改了sql语言,并不影响这里的。
      

  2.   

    将取得的数据赋值给edit的例子edit1.text := adoquery.fieldbyname('field_name').asstring;//field_name代表你要取得字段的名字。
      

  3.   

    那最后执行的是程序中的sql语句,还是执行你在属性栏里输入的SQL语句呢?
      

  4.   

    wudi_1982(Delphi &Vs.net)
    你忽略了一个很简单的问题,就是在Delphi7里
    ADOQuery在等号后面是不能使用(ADOQuery.fieldbyname().asstring)
    而只能使用ADOQuery.fieldvalues[''];