0

我知道以前有人问过这个问题……有点。这就是我发帖的原因。基本上,我正在 Crystal 中构建一个报表,它依赖于保持这个简单,至少 3 个表。

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

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

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

使用外部连接,我设法在一定程度上得到了我的结果,但在现实世界的报告中是不可接受的。我确定这个问题已经出现,但我似乎找不到任何合适的答案,老实说,我什至不确定作为 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 行)

4

1 回答 1

0

我认为这应该有助于为您指明正确的方向,尽管我从事 Crystal Reports 的繁重工作已经有 5 年左右的时间了。

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

另一种可能的解决方案可能无法满足您的要求,但可能会让您以另一种方式思考,即创建您的主报告并在其中显示表 A 中的字段。然后在这些字段下方包含一个子报告并传入唯一的表 A 中的 ID。然后,您将在子报表中进行查询,查找具有该表 A.ID 值的所有表 B 记录并显示它们的详细信息。

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

于 2012-12-04T21:22:21.700 回答