【问题标题】:Crystal Reports Multiple Tables Issue水晶报表多表问题
【发布时间】:2014-06-04 01:01:32
【问题描述】:

我有一个使用 Crystal Reports for VS 2010 的 C# 2010 应用程序。我的报告的目的是显示一个人在一周或数周内的每一天应该在哪里。格式是这样的:

请注意,它是成对显示的,而不是带有通用标题的表格。

它使用一个包含两个数据表的数据集,一个用于标题日期,一个用于位置。

问题是,如果我在每个 DataTable 中有 n 个项目,则报告会显示 n^2 对标题/位置,而不仅仅是 n。该模式类似于两个表的笛卡尔积。

我认为这可能与报告的数据库专家中的链接部分有关,但我无法修复它。它现在不包含任何链接。

我使用的数据集是这样的:

【问题讨论】:

  • 贴一张相关表的关系和你正在使用的查询的截图。
  • 它们之间没有关系。我认为这可能是问题,但我没有设法解决它......不知道你所说的查询是什么意思。我已经编辑了原始帖子并添加了 DataSet 的外观。

标签: c# crystal-reports


【解决方案1】:

为什么需要一个表格来存放标题?你想达到什么目的?

为什么不向 WeekTable 添加一个日期 (StartOfWeek) 来表示一周的开始日期?如果您有该日期,则每个列标题将是一个公式字段,该字段根据 StartOfWeek 字段计算日期。如此简单,它消除了您遇到的笛卡尔积。

** 编辑 **

会有 7 个标题公式(每天一个):

//{@Sunday}
DateAdd("d", 0, {WeekTable.StartOfWeek})

...

//{@Saturday}
DateAdd("d", 7, {WeekTable.StartOfWeek})

将每个字段添加到页眉部分并根据需要设置格式(它们是日期值)。

【讨论】:

  • 因为我需要标题类似于“6 月 21 日星期一”。有没有办法按照你建议的方式让它以这种形式显示?
  • 工作就像一个魅力!非常感谢!
【解决方案2】:

您需要链接表才能仅获取n 行。

理想情况下:

  • 将唯一的ID 列添加到Headers 表。使其成为一个主键和一个自动递增的标识。
  • WeekTable 表中添加一个HeaderID 列,并使其成为ID 列上Headers 表的外键。

Headers 表现在应该每周只包含一行,因此如果您有四名员工,他们将在给定的一周内都拥有相同的HeaderID

【讨论】:

  • 即使它可能应该有效,但它没有。照你说的试了,做了很多修改还是不行。感谢您的帮助。
【解决方案3】:

您可能需要进一步解释一下您的“标题日期”是什么。但是从您所说的来看,它们没有链接到主要数据,在这种情况下,我可能会在标题中使用子报告。

【讨论】:

    猜你喜欢
    • 2010-09-22
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多