2009-12-04 43 views
0

我编写了一个应用程序,它允许用户定义一个查询,使用TADOQuery组件运行它,并将报告另存为一个XML文档(SaveAsFile作为Format参数传入pfXML )离线查看。这工作正常。Delphi使用ClientDataSet的ADOQuery结果串联

我现在需要做的是连接结果。我的意思是,我需要至少获得两份报告(使用相同查询时使用相同的字段),并将它们连接在一起制作一份报告。例如: 假设我有一个查询检索用户列表。我在“系统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/

所有的帮助将是对此表示赞赏。我真的不知道从哪里开始!

回答

0

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