0

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

在此处输入图像描述

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

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

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

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

我使用的数据集如下所示:

在此处输入图像描述

4

3 回答 3

1

为什么你需要一个表头?你想达到什么目的?

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

** 编辑 **

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

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

...

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

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

于 2012-07-05T15:58:09.513 回答
1

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

理想情况下:

  • 向表中添加一个唯一IDHeaders。使其成为一个主键和一个自动递增的标识。
  • 向表中添加一HeaderIDWeekTable,并使其成为该列上Headers表的外键ID

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

于 2012-07-10T14:39:38.683 回答
0

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

于 2012-06-14T11:53:21.433 回答