0

我正在尝试使用 C++ Builder 6 中的 QuickReport 创建报告,但无法生成我需要的结果。

我尝试以两种方式创建这份报告,但取得了一定的成功。我在下面详细介绍了一种尝试,因为它似乎是最有希望的。我是 QuickReport 的新手,不知道在哪里寻求帮助。我在http://www.quickreport.co.uk/上在线找到的文档很少,除了极其简单的报告之外,并没有充分解释如何使用该产品。

报告的格式应如下:

  • 制造商 1
    • 一个产品
    • 另一种产品
    • 又一个产品
  • 制造商 2
    • 我的产品
    • 这个产品

尝试 1:分离制造商和产品数据的两个查询

  • 创建一个通过 ID 获取制造商集合的 TQuery。
  • 创建一个细节带。
  • 将报表的 DataSet 设置为 Manufacturer TQuery。
  • 在与制造商 TQuery 和制造商名称字段关联的详细信息带上创建制造商名称 QRDBText 字段。
  • 创建一个 TQuery,它通过制造商 ID 获取产品集合,制造商 ID 是 TQuery 的参数。
  • 创建一个子细节带。
  • 将 Sub Detail 带的 DataSet 设置为 Product TQuery。
  • 在与 Product TQuery 和 Product Name 字段关联的 Sub Detail 带上创建 Product Name QRDBText 字段。
  • 为 Sub Detail 带创建事件:
    • 打印前:
      1. 获取当前制造商 ID 并将其作为参数插入到 Product TQuery
      2. 激活产品 TQuery
    • 印后:
      1. 停用产品 TQuery

结果:这几乎可以满足我的要求。它正确显示每个制造商,但是它只显示每个制造商的第一个产品。我不确定我是否错误地期望 Sub Detail 带像 Detail 带那样遍历结果,或者我是否缺少其他一些使其工作的必要步骤。我也考虑过使用 Loop 或 Child 乐队,但似乎都没有提供我期望的功能。同样,我似乎根本找不到合适的文档来解释 QuickReport。

最后,我无法确定我是否期待 QuickReport 不提供的功能,或者我是否认为这一切都错了。

4

1 回答 1

1

解决方案:

  • 创建一个通过 ID 获取制造商集合的 TQuery。
  • 创建一个细节带。
  • 将报表的 DataSet 设置为 Manufacturer TQuery。
  • 在与制造商 TQuery 和制造商名称字段关联的详细信息带上创建制造商名称 QRDBText 字段。
  • 创建一个 TQuery,它通过制造商 ID 获取产品集合,制造商 ID 是 TQuery 的参数。
  • 创建一个子细节带。
  • 将 Sub Detail 带的 DataSet 设置为 Product TQuery。
  • 在与 Product TQuery 和 Product Name 字段关联的 Sub Detail 带上创建 Product Name QRDBText 字段。
  • 新的!将 Detail 带区的 LinkBand 属性设置为 Sub Detail 带区。
  • 新的!在打印/预览/等之前。报告中,在代码中将每个查询的 Active 属性设置为 True。
  • 新的!打印/预览/等之后 报告中,在代码中将每个查询的 Active 属性设置为 False。

真正让我失望的部分是发生的“魔术”,您无需指定数据源和产品查询之间的参数。看来,如果您指定指向数据集的查询所需的参数,则查询将查找共享该名称的字段并匹配它们。

我希望这对未来的人有所帮助。

于 2014-02-18T20:07:24.813 回答