阻止Crystal Reports选择相关字段以仅获取不同的项目

时间:2015-02-04 19:23:29

标签: crystal-reports

我将Crystal Reports 14与Oracle DB结合使用。如果我有相关的表AuthorsBooks,我会选择所有拥有“#code”代码的作者。在他们的标题中,Crystal会将Books.title放入SQL SELECT子句中,即使我不在报告中的任何位置使用任何Books字段(除了记录选择)。查询如下所示:

SELECT "AUTHORS"."NAME", "BOOKS"."TITLE"
FROM "AUTHORS" INNER JOIN "BOOKS" ON "AUTHORS"."ID"="BOOKS"."AUTHOR"
WHERE "BOOKS"."TITLE" LIKE '%code%' 

这会导致问题,因为即使我使用" Distinct"选项,我将为每位作者提供许多条目(如果他们在标题中有超过一本书的代码')。但我想要的只是作者的一个条目。 "鲜明"不要在这里工作,因为每个条目都是截然不同的,他们的书名不同。

如何避免在"BOOKS"."TITLE"子句中获取SELECT,如下所示:

SELECT DISTINCT "AUTHORS"."NAME"
FROM "AUTHORS" INNER JOIN "BOOKS" ON "AUTHORS"."ID"="BOOKS"."AUTHOR"
WHERE "BOOKS"."TITLE" LIKE '%code%' 

如果这不可行,那么在我的方案中获得不同作者的最佳解决方法是什么?

更新

我应该补充一点,目前我在抑制详情部分中使用了这个公式:

{AUTHORS.ID} = previous({AUTHORS.ID})

这个解决方案以及@Beth提出的组解决方案的问题在于查询是相同的,并且DB无缘无故地返回太多数据。在这两种解决方案中,数据都在Crystal Reports中过滤/重新分组,而不是在DB中。

1 个答案:

答案 0 :(得分:0)

您可以按报告中的作者进行分组并取消books.title详细信息吗?

按作者分组,在报告中的Insert菜单下,选择“Group...”,然后在第一个组合框中选择author.id,然后点击“确定”。您会注意到您的报告已更改为在详细信息部分的上方和下方引入了“组页眉”和“页脚”部分。您可以取消详细信息部分,只有作者才能打印。

如果您只想让作者遇到过,那么您需要使用发送到数据源的命令和您想要使用的SQL,而不是像现在这样直接使用这些表。

您可以使用参数创建一个命令作为后端。您将使用该参数化命令而不是您现在使用的表。尝试在不使用参数的情况下创建命令,然后在完成此操作后,可以将现有参数添加到命令SQL中。