繁体   English   中英

无法创建描述C ++ Builder 6中一对多关系的QuickReport

[英]Unable to create a QuickReport portraying a one-to-many relationship in C++ Builder 6

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

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

该报告应采用以下格式:

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

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

  • 创建一个TQuery,以按制造商的ID获取制造商的集合。
  • 创建一个明细带。
  • 将报表的数据集设置为制造商TQuery。
  • 在与制造商查询和制造商名称字段关联的详细信息区域上创建制造商名称QRDBText字段。
  • 创建一个TQuery,通过其制造商ID获取产品集合,该ID是TQuery的参数。
  • 创建一个子明细带。
  • 将“子明细”区域的“数据集”设置为“产品TQuery”。
  • 在与“产品查询”和“产品名称”字段关联的“子明细”区域上创建“产品名称QRDBText”字段。
  • 为“子详细信息”区域创建事件:
    • BeforePrint:
      1. 取得当前的制造商ID并将其作为参数插入到产品TQuery中
      2. 激活产品查询
    • 打印后:
      1. 停用产品查询

结果:这几乎可以满足我的要求。 它会正确显示每个制造商,但是只会显示每个制造商的第一个产品。 我不确定是否不正确地期望“子细节”区域像“细节”区域那样遍历结果,或者我是否缺少其他必要的步骤来使其正常工作。 我也考虑过使用Loop或Child频段,但似乎都没有提供我期望的功能。 再说一次,我似乎根本找不到像样的文档来解释QuickReport。

最后,我无法确定是否期望QuickReport不提供功能,或者我是否正在考虑所有这些错误。

解决方案:

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

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

我希望这可以帮助某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM