使用ClientDataSet进行Delphi ADOQuery结果连接

时间:2009-12-04 16:25:09

标签: delphi ado tclientdataset

我编写了一个应用程序,允许用户定义查询,使用TADOQuery组件运行它,并将报告作为XML文档(SaveAsFile传入pfXML作为Format参数)保存到PC,以供离线查看。这很好。

我现在需要做的是连接结果。我的意思是我需要至少获得两个报告(使用相同的查询时使用相同的字段)并将它们连接在一起以生成一个报告。例如: 假设我有一个检索用户列表的查询。我在“系统A”和“系统B”上运行此查询,其中系统A和系统B是两个独立的系统。一旦我在两个系统上运行查询,我有两个单独的报告文件,我可以将其加载回TADOQuery组件,然后在屏幕上查看。我需要做的是将报告加在一起,所以不必在两个报告之间切换,我可以同时在屏幕上看到所有结果。

我被告知我可以使用TClientDataSet执行此操作,但我对数据库编程相对较新,并且不知道从哪里开始。我已经查看了http://delphi.about.com/od/usedbvcl/a/tclientdataset.htm上的文章,但我仍然处于黑暗状态,似乎没有什么能像我需要做的那样。

因此我有两个问题: 1.使用TClientDataSet是获取两个单独结果集并连接它们的最佳方法吗?如果有更好的方法来做到这一点,它是什么? 2.如果使用TClientDataSet是最好的方法,我将如何做到这一点?如何将数据从TADOQuery传输到TClientDataSet然后再返回?处理的基本流程需要像这样:

报告1(LoadFromFile) - > TADOQuery \

                                  ClientDataSet -> TADOQuery -> SaveToFile

报告2(LoadFromFile) - > TADOQuery /

所有帮助将在此受到赞赏。我真的不知道从哪里开始!

1 个答案:

答案 0 :(得分:0)

我刚刚看完这个。我的应用程序允许用户通过查询其数据库来生成报告。我可以使用它,这对于小型结果集非常有效 - 但是,因为这是一个报告应用程序,并且完全有可能返回数十万条记录,使用ClientDataSet会产生大量性能问题。一旦你获得大约50,000条记录(合理的,给定客户群),处理开始呈指数级增长,所以现在基本上没有实际意义。