我现在要做一个统计的小工具,使用ADOQuery连接数据,用DBGrid显示,其中一部分数据来自远程SQL数据库,一部分数据来自本地EXECL文件,请问要如何实现呢?有人说使用ADOQuery建立一张虚拟表,可是我不会做,如果能建,那又该如何对表中的数据进行二次操作呢?

解决方案 »

  1.   

    有人说使用ADOQuery建立一张虚拟表,我再详细一点吧:
    1、用ADOQUERY连接EXECL把数据读出,并写入远程数据库的一张虚拟表tmpTab。
    2、用tmpTab与你需要的数据表进行二次操作(统计汇总)后,把数据结果返回。。还有一种方法就是:把远程数据库读出来的数据与EXECL读出来的数据放到两个不同的ADOQUERY,然后用程序进行二次操作(统计汇总)到新的ADOQUERY中。
      

  2.   

    我想用第2种方法,要用3个ADOQUERY吗?已经用一个连到数据库了,再用一个读EXECL问题也不大,怎么把这两个数据汇总呢?读取的数据我还要再处理统计才能输出的.
      

  3.   

    是的要用到3个ADOQUERY。ADO1:远程SQL, ADO2:EXECL ADO3:用来统计的新数据集
    至于第3个ADOQUERY的数据结构如果和前两个ADOQUERY相同(或包含在其中一个里面)的话,可以这样子处理。
    //赋表结构给新的ADO3
    ADO3.DATA := ADO1.DATA;
    ADO3.DeleteRecords(arAll);//如果不相同可以从远程SQL虚拟一个数据空的数据集结构
    //ADO3.SQL.TEXT:=' SELECT FNAME AS NFSum1, FNAME AS NFsum2, ... FROM 远程表名'然后用程序进行循环ADO1、ADO2处理相关数据信息,进行汇总操作后写入ADO3。提示:ADO3也可以用TClientDataSet等控件。。