Delphi ADO Query - 连接结果集

时间:2009-09-22 13:43:12

标签: xml delphi ado

我正在编写一个允许用户向多个系统提交查询的应用程序。然后,我使用SaveToFile保存每个系统的每个报告,SaveToFile将其保存为XML文档。

然后,用户可以通过从菜单中选择每个报告来检查每个报告,并通过将报告加载回ADO查询组件(使用LoadFromFile)然后将其链接到列表视图来显示报告。

现在,我的问题是用户需要能够选择任何或所有报告并将它们连接在一起以创建一个大型报告。例如:

用户可以将查询定义为SELECT * FROM(table),然后他可以在系统A,系统B和系统C上运行此查询。他不需要查看三个单独的报告,而是需要选择加入来自三个系统的报告,这样他就可以查看一份涵盖所有三个系统的大型报告。

是否可以使用ADO查询组件执行此操作?如果没有,因为文件保存为XML文档,是否可以使用XML文档将报表连接在一起?

我不知道从哪里开始,所以任何指针都会受到赞赏。

编辑:我在某种程度上忘记首先包含的重要信息:

  1. 用户需要能够脱机访问数据 - 即他需要能够在各种系统上运行查询,然后在以后使用报告。因此,需要能够将报告保存到磁盘,然后在未连接到运行查询的任何系统时重新加载它们。用户可能希望此时连接报告。

  2. 所有要连接在一起的报告都是完全相同的类型 - 即它们都是从同一个查询中生成的,因此会给出相同数量/类型的字段等。

2 个答案:

答案 0 :(得分:2)

您可以创建ClientDataSet并将所有源的结果附加到一个数据集中,而不是将它们另存为单独的XML文件。这样您就可以一次查看所有结果,也可以一次只查看一个源。 ClientDataSet的内容可以保存为单个文件,这比处理多个文件更容易。

当然,这假设您从所有来源获得类似数据(相同列)。

答案 1 :(得分:0)

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