我有一个使用Crystal Reports for VS 2010的C#2010应用程序。我的报告的目的是显示一个人每周应该在一周或多周的位置。格式如下:
请注意,它是成对显示的,而不是带有常规标题的表格。
它使用一个包含两个DataTable的DataSet,一个用于标题日期,另一个用于位置。
问题是,如果我在每个DataTable中有n个项目,则报告显示n ^ 2对标题/位置而不是n。该模式类似于两个表格的笛卡尔积。
我认为它可能与报告的数据库专家中的链接部分有关,但我无法修复它。它现在不包含任何链接。
我使用的DataSet如下所示:
答案 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)
您可能需要进一步解释一下您的“标题日期”。但是从你所说的它们并没有链接到主数据,在这种情况下我可能会在标题中使用子报告。