【发布时间】:2012-12-04 21:01:45
【问题描述】:
我知道以前有人问过这个问题……有点。这就是我发帖的原因。基本上,我在 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 行)
【问题讨论】:
-
不,我在这方面也没有成功。我只是想不出一种链接表格的方法,这样我就没有得到笛卡尔积并且仍然可以独立访问表格数据。子表实际上将在报告中填充其相关字段
-
在这种情况下,让我们看看能否为您提供在 Access 中正常工作的查询。暂时将水晶排除在等式之外。向我们展示您的表格中相关列的简要示例以及基于该示例数据的您想要的结果集。
-
@HansUp 让我解决问题。我的数据库非常广泛。我会尽快回复你
-
我会尽量同意这一点。我的 DB Section1、Section2 和 S2childAdmin 中有。 Section1 是 Section2 在其上构建的基本起始位置(表单中的下一步),S2childAdmin 包含基于 Section2 的多选列表框的选择。它与 Section2 可以有 0 到 N 个关系。我将在下面添加一个示例。
-
感谢您的澄清,泰勒。我误解了你问题的性质;这不是关于修复 Access 查询以返回您想要的结果。您想要的在 Access 查询中是不可能的。如果这是一个 Access 应用程序,您可以在主窗体中显示前 2 个表的连接,并在子窗体中显示“免费可用表”。或报告和子报告。我不知道 Crystal 提供了哪些功能。
标签: asp.net visual-studio-2010 crystal-reports ms-access-2007