Crystal报告多个表问题

时间:2012-06-14 10:33:41

标签: c# crystal-reports

我有一个使用Crystal Reports for VS 2010的C#2010应用程序。我的报告的目的是显示一个人每周应该在一周或多周的位置。格式如下:

enter image description here

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

它使用一个包含两个DataTable的DataSet,一个用于标题日期,另一个用于位置。

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

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

我使用的DataSet如下所示:

enter image description here

3 个答案:

答案 0 :(得分:1)

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

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

**编辑**

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

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

...

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

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

答案 1 :(得分:1)

您需要将表格链接到仅获取n行。

理想情况下:

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

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

答案 2 :(得分:0)

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