【问题标题】:Crystal Reports: How can I avoid nested subreports in this case?Crystal Reports:在这种情况下如何避免嵌套子报表?
【发布时间】:2010-07-22 16:29:43
【问题描述】:

我有一个包含用户信息的主报告 - 以及一个包含所述用户的多个项目的子报告。

问题是,我需要主报告根据我提供给数据源的用户数量复制尽可能多的次数——我该怎么做才能生成一个大报告(包含多个主报告)报告)?

编辑:让我再举一个具体的例子(类似于我自己的例子):假设我想要一份杂货店购物者的报告——购物者的所有人口统计数据都将是主要的但是,报告需要有一个部分(或子报告)用于包含所有购买的物品的特定购物行程。

现在,这里是夹钳。我需要为许多不同的购物行程生成此报告(这也意味着不同的购物者)。

最好说这是一份“购物之旅”报告,可以运行一批购物之旅。

进一步的进展:当我的数据如下所示时,如何让分组工作:

(shoppingTripId, shopperId, shopperName, shoppingDate, itemBought)
------------------------------------------------------------------
1, 1, Chris, July-24-2009, Computer
1, 1, Chris, July-25-2009, Laptop
2, 3,  John, June-14-2009, Ipod
2, 3,  John, June-14-2009, Television

如果一切顺利,报告将如下所示:

+-----------------------------------------------
| Chris                     ShoppingTripID: 1
| 123 Main Street               CustomerID: 1
| Anytown, CA 90210
+-----------------------------------------------
| Computer   $999.00
| Laptop    $1099.00
+-----------------------------------------------
+-----------------------------------------------
| John                      ShoppingTripID: 2
| 123 Main Street               CustomerID: 3
| Anytown, CA 90210
+-----------------------------------------------
| Ipod       $999.00
| Television $1099.00
+-----------------------------------------------

目前,我得到了这个:

+-----------------------------------------------
| Chris                     ShoppingTripID: 1
| 123 Main Street               CustomerID: 1
| Anytown, CA 90210
+-----------------------------------------------
| Chris                     ShoppingTripID: 1
| 123 Main Street               CustomerID: 1
| Anytown, CA 90210
+-----------------------------------------------
| John                      ShoppingTripID: 2
| 123 Main Street               CustomerID: 3
| Anytown, CA 90210
+-----------------------------------------------
| John                      ShoppingTripID: 2
| 123 Main Street               CustomerID: 3
| Anytown, CA 90210
+-----------------------------------------------
| Computer   $999.00
| Laptop    $1099.00
+-----------------------------------------------
| Computer   $999.00
| Laptop    $1099.00
+-----------------------------------------------
| Ipod       $999.00
| Television $1099.00
+-----------------------------------------------
| Ipod       $999.00
| Television $1099.00
+-----------------------------------------------

【问题讨论】:

    标签: c# visual-studio-2008 crystal-reports reporting subreport


    【解决方案1】:

    将主报表移动到报表的详细信息中(必要时拆分为小节以进行格式化),并将子报表也放入详细信息中。

    这样,您将获得每个用户的主报告(加上子报告)。

    编辑

    我想得越多,您可能甚至不需要子报表。如果您在主报告中将您的购物者和购物行程表一起加入,您可以将购物行程信息放在详细信息中,所有这些都按购物者 ID 分组。

    在组标题中,您将放置当前在主报告中的所有内容。

    从这里,您可以将购物行程 ID 列表作为参数传递给报表,并在您的记录选择公式中使用此参数。

    你应该得到这样的结果(编辑 2010/07/25):

    +-----------------------
    | Report Header 
    +-----------------------
    | Page Header
    +-----------------------
    | Group Header (Grouped by **ShoppingTripID**)
    |   Display your shopper information here
    +-----------------------
    | Details
    |   Display your shopping trip information 
    |   for the shopper here
    +-----------------------
    | Group Footer
    +-----------------------
    | Page Footer
    +-----------------------
    | Report Footer
    +-----------------------
    

    【讨论】:

    • 让我通过对问题提出一些细微的变化来要求澄清:如果我制作一份空报告,然后在“详细信息 A”下创建一个子报告,其中包含用户报告的主要部分——如何让多个项目显示在用户下方 - 为多行项目添加的“详细信息”部分是否不需要是显示所有项目的子报表?
    • 嵌套子报表是一个非常糟糕的主意。在您的报告中,您是按购物行程 ID、购物者 ID 还是两者之一进行搜索?
    • 我的理解是,如果我愿意,我不能做嵌套,所以这就是为什么我正在寻找一种解决这种心态的方法。将根据 shoppingTripID 提取初始数据集。实际上,数据集本身将是大量的 shoppingTripID,而不是特定的。
    • 重新阅读您的回复后,一个小灯泡亮了,所以我会在尝试您的建议后回复。谢谢!
    • 这个建议听起来很像我希望听到的。如果我使用从代码隐藏而不是报告中检索的数据集,它应该不会有太大的不同——应该吗?我现在正在尝试,但我对分组仍然很陌生,因为到目前为止我已经能够避免它。
    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    相关资源
    最近更新 更多