具有多个表的水晶报告 - 空或笛卡尔积

时间:2012-12-04 21:01:46

标签: asp.net visual-studio-2010 crystal-reports ms-access-2007

我知道之前有人问过这个问题。这就是我发帖的原因。基本上我在Crystal中构建一个报告,为了保持这个简单,至少需要3个表。

表A通过唯一ID内部连接到表B.表B有一个子表,可能有也可能没有与此unqiue ID相关的数据。

作为一般示例,表A是客户表,表B是产品表,子表包含产品编号。所有客户都有产品,但并非所有客户都在子表中有产品编号。我希望我已经解释得那么简单。

我的问题是介于Crytal和Access之间以及如何查询它。当我在VB中写一些东西时,编写和执行查询并以所需方式显示结果很容易。但是我似乎无法直接得到我的查询...我最终得到一个带有笛卡尔积的报告作为结果集,显示确定...除了即使是少数记录我最终大约是30k页。 。或者我最终得到一个空白数据集,因为子表没有对B的相应数据。

使用outter join我已经设法在一定的理由中得到我的结果,但现实世界的报告不能接受。我确定这个问题已经出现但我似乎无法找到任何合适的答案,说实话我甚至不确定要问什么问题是一个Crystal n00b。

我真正关注的是表A中的数据,表B中的数据和子表。虽然它们是逻辑链接的并且可以与ID字段链接,但我没有必要考虑因为我正在为ID字段的报告获取参数值。一旦表被过滤,除了将它们转储回报告之外,不需要采取任何其他行动。

那么有人能指出我正确的方向吗?我可以根据单独的部分设置单独的数据(不相关)吗?我应该在我的数据库中构建一个查询和逻辑树来获得我需要的东西吗?我一直在绞尽脑汁,似乎无法找到正确的解决方案,任何和所有的建议都是不可取的,如果我能澄清任何问题或回答任何问题我将会这样做。

提前致谢。

根据以下要求:

Section1

ID fname lname 
01 john smith 
Section2

ID notifiedDate notifiedTime 
01 10/10/2012   12:35PM 

S2childAdmin 
ID noteName 
01 jane doe 

此数据在逻辑上相关,可以在DB中相关。但是,只要将ID参数传递给每个表,就没有必要。查询与Section2连接的Section1内部工作正常。但是任何其他安排都会产生比所需更多的行,并且我最终会多次重复报告。我真正需要的是类似Section1与Section2和S2childAdmin一起作为一个免费的表格。否则它会将我的数据或结果乘以空记录集(因为它可以返回0行)

1 个答案:

答案 0 :(得分:0)

我认为这应该有助于指明你正确的方向,尽管自从我做了大量的Crystal Reports工作以来已经有5年左右了。

一个选项可能是使用您所说的外部联接加入所有内容,然后在表A ID上使用Crystal Report“组”,其中包含基于表B ID的组。因此,您可以在实际的“详细信息”区域中放置表C详细信息(如果有),然后使用表A和表B的组页眉/页脚显示特定于这些对象的数据。

另一种可能达不到您的要求但可能让您以另一种方式思考的可能解决方案是创建主报告,并在其中显示表A中的字段。然后在这些字段下方包括子报告和通过在表A中的唯一ID中。然后,您将在子报表内部查询,该查询将查找具有该表A.ID值的所有表B记录并显示其详细信息。

此时您遇到了Crystal Reports的弱点(至少截至我使用的上一个版本),因为您不能在子报表中包含子报表。