在一个TAdoDataSet中如何处理多表问题?

解决方案 »

  1.   

    你是说动态查询吧!把DataSetProvider1.Option的poAllowCommandText设置True;在ClientDataSet1.CommandText加上结构化查询语句就可以了。
      

  2.   

    用SQL语句啊,你的问题太模糊
      

  3.   

    好,我举个例子说明:用户表
      userid ,username,phone,address收费表:
      userid,charge,date,re我希望我的TAdoDataSet包含如下数据,
    userid ,username,phone,charge,date,re我想通过该数据集处理用户的收费信息,即可以添加、删除、修改用户收费信息我曾经尝试设置TAdoDataSet的CommandText,如下:
    Select 收费表.userid,username,phone,charge,date,re
    from 收费表,用户表
    where 收费表.userid = 用户表.userid但我发现当我对TAdoDataSet进行数据存取时,实际上会同时更改了收费表、用户表
    里面的数据,而我只希望修改收费表中的数据,对于用户表的数据,不希望其发生
    变化,只是显示出来而已
      

  4.   

    两种方法:
    1、两个表关联查询的话,就不能用POST、UPDATEBATCH来保存,自己写语句(INSERT/DELETE/UPDATE)来保存。
    2、只查询要修改的表,select userid,charge,date,re from 收费表,在DATASET上ADD两个LOOKUP字段,根据USERID来LOOKUP用户表中的USERNAME和PHONE。 这样可以POST或UPDATEBATCH来保存了。
      

  5.   

    ccnh() :如果用方法2,在DATASET上ADD两个LOOKUP字段实现,在进行数据过滤时会碰到新的问题:比如:我要查询数据,我希望返回TAdoDataSet中所有姓名为'Jack'的记录,但是我设了filter之后把数据集激活时,就会出现错误,这个问题又该如何解决?还有没有别的方法可以解决?
      

  6.   

    自己写sql语句吧,不要想一个post就搞定