我在我的Crystal Report XI for VS2010中有3个表,现在就是这个场景:
3个表与POID链接在一起。
表2和表3是独立的,并且仅依赖于表1的POID。当表2和表3中的POID记录数不同时,问题就开始了。
在将表3添加到报告之前,我将报告分组在表1的POID上,并将表2记录信息放在报告的“详细信息”部分中。但是,现在我已经插入了表3记录,表2和表3记录保持重复。
例如:对于POID = 1001,有一个表1记录,三个表2记录和两个表3记录。因此,报告的结果是每个表2记录重复两次,每个表3记录重复三次。
我不希望他们重复自己。我希望它们显示在数据库中。
我使用C#,VS2010和SQLExpress2008将所有表数据用于POID组。
我希望这很清楚,你可以提供帮助。提前谢谢。
注意:我对这个问题进行了很多研究,最后在这里问了。
答案 0 :(得分:3)
首先,我认为你错误地解释了对这样一个数据库的查询是什么样的。实际上,如果你将连接设置为像SELECT * FROM TABLE1 CROSS JOIN TABLE2 ON TABLE1.POID = TABLE2.POID CROSS JOIN TABLE3 ON TABLE2.POID = TABLE3.POID
这样的东西,那么它实际上会给你一个数据库查询在视图中返回的内容,这意味着:如果有一个TABLE1记录,三个TABLE2记录和两个Table3记录,你' d选择TABLE1记录六次,每次TABLE2记录两次,总共六次,每次TABLE3记录三次,总共六次。所以,实际上,你正在返回6行,但报告中的所有内容都是FUBAR,因为你的布局如何。对TABLE1记录进行分组可能是您所做的唯一“正确”事情。
我认为在没有创建其他数据库对象的情况下处理此问题的最简单方法是子报表。希望这是有道理的,如果你愿意,我可以把图像放在一起,但你想要做的是:
本质上它应该看起来像:
这将为每个TABLE1记录生成一个带有TABLE1标题的报告,后跟其TABLE2和TABLE3信息,而不会重复它们并让您发疯。
这是否有意义或有帮助?