【发布时间】:2013-04-10 04:34:56
【问题描述】:
我正在使用 Delphi 16 和 Fast Reports 4.1。 Embarcadero Edidion。
粗略地说,我的问题是: 有没有办法强制 frxReport(连接到数据库)在报告生成期间跳过一些表条目?
我的意思可以解释如下:
假设我们有一个来自数据库的大表,其中包含 1000 个条目,并假设我们要生成一个包含该表中数据的报告,每个条目一页。 自然地,1000 页的报告处理起来有点多,所以我们需要一种方法来告诉 Fast Report 在准备报告时要使用表格的哪些条目。
要仅选择表中所有条目的子集,我使用 DBGrid,在其中设置 DBGrid.Options.dgMultiselect := True 并通过鼠标单击选择所需的行。然后我将选定的行复制到一个单独的 TClientDataSet(named TempDataSet) 组件中,之后我将当前报告的数据集设置为新创建的 TempDataSet ('frxDataSet1.DataSet := TempDataSet') 并启动准备报告。
这似乎没问题,但在我正在编程的应用程序的上下文中,这是不可接受的。所以回到原来的问题:有没有办法控制在“frxReport1.PrepareReport();”时必须访问“frxDBDataset1.DataSet”中的哪些条目;叫做 ?
谢谢
【问题讨论】:
-
所有过滤和排序过程都应在将数据传递给报告之前进行。您可以使用 TClientDataSet 来存储过滤和排序的行(就像您已经做的那样):o)
-
作为替代方案,您可以尝试 TfrxUserDataset
-
问题是,我的一半应用程序假定 frxReport 的数据集是 TADOTable 类型。糟糕的应用程序设计,我猜。这就是为什么我正在寻找替代方案。那么是否可以在不将其与具体数据库表关联的情况下创建并填充数据 TADOTable 对象?我的意思是一种内存中的 TADOTable...
标签: delphi fastreport