1

我在sql-server中存储了一个proc,并且它返回的参数之一是一个带查询参数的字符串。我在报告顶部显示这些查询参数。如果发现了某些东西,这很好,如果没有发现东西,那就不是那么好。使用来自存储过程的多个结果的Crystal Reports

我们已经尝试返回两个查询结果,一个是我将生成报表的数据集(其中包含查询参数),另一个是查询参数字符串。 Crystal似乎只能看到第一个数据集,而这个非常古老的讨论(http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=42462)表示这不会起作用。但那是在5年前,我希望事情发生了变化。

问题是,如果没有返回任何内容,则报告太空白以致于该人甚至不知道他们使用了哪些查询参数。如果他们看到他们查询了一些不会返回任何结果的东西,那就很有用。

所以,如果我有我的存储过程的末尾:

SELECT * FROM [#ResultSet] 
select @SearchCriteria as SearchCriteria 

我想能够显示SearchCriteria即使没有在#ResultSet。这个版本的水晶可以做到吗?有没有另一种方法来做到这一点?

回答

1

除非第一个答案所述,一个过程的结果与另一个过程(包括类型)的列数相同,如果是这种情况,您可以UNION结果或UNION ALL结果(如果您想要重复)得到一个结果集。

如果类型或列不相同,那么你不能这样做。你唯一可以做的另一种选择是所有相关的数据合并到一个临时表,然后返回来自该临时表(SELECT * FROM #temp

+0

我们采纳了这个想法并在此基础上构建 - 如果有结果,则返回结果(包括搜索条件字符串);如果没有结果,则返回与一堆NULL值结合的结果以及搜索条件字符串(一条记录)。 – thursdaysgeek

0

结果如何目前能够结果发现时显示的参数?

你还没有提到你如何在你的环境中使用Crystal Report。

通常,我通过将参数传递给Crystal Report作为报表参数,然后在字段中使用它们来完成条件显示。这假定您以某种方式从客户端应用程序调用它。

另一种方法是将结果加载到客户端数据表中,并将其作为数据源绑定到数据表中,当然可以通过这种方式处理多个结果集。

+0

大约有十几个参数可以发送,所选参数将被组合成一个字符串,放入每个结果记录中,并显示在报告顶部。不是优雅的,但它的工作原理,使我们不必在水晶组装字符串。 – thursdaysgeek

+0

@thursdaysgeek在这种情况下,只需将UNION结果与一行所有NULL和参数​​列一起使用即可。添加行选择器类型指示器列以指示它是结果行还是只是参数行。然后,报告可以选择要在参数区域中使用的数据行和参数行中的数据行。 –

相关问题