好的,我知道有数百篇文章说明了如何将参数从存储过程传递到水晶报表。但不幸的是,通过一些研究,我没有找到关于 SQL Server 变量和水晶报表参数的问题的具体答案。
问题:如果我有一个存储过程,并且我声明了一个名为“位置”的变量,并且我想在我的水晶报表中引用该变量作为新参数,并且最终用户将看到一个对话框,允许他们从不同的位置进行选择这将返回仅针对从下拉列表中选择的特定位置的结果。那怎么会发生?
目前尝试的方法:
水晶报表生成器 11
在字段资源管理器下的“参数字段”中,选择新建,然后按动态选择“值列表”,然后选择与我的变量一起使用的数据源和列,它说“参数”是@location。但是当我运行报告时,我会看到一个位置值对话框,但没有可供选择的值。(要注意位置字段是由用户通过报告下拉选择提供的,从而从存储过程返回结果)
在“参数字段”中选择新的值,然后将值列表保留为“静态”,并选择值字段作为“位置”列,并输入与位置有关的多个值供用户选择。(这确实会向用户显示一个对话框,建议一个位置的下拉值,但没有返回结果,所以我不确定这是否是正确的方法?)
代码:
ALTER PROCEDURE [dbo].[a_ras_TruckSummary_SP]
AS
BEGIN
IF (object_id('tempdb..#tempTruckSummary') IS NOT NULL)
BEGIN
DROP TABLE #tempTruckSummary
END
DECLARE @location VARCHAR(10)
SELECT O.order_no, L.shipped, L.price, L.[location] FROM orders O WITH
(NOLOCK)
INNER JOIN Ord_list L ON O.order_no = L.order_no
WHERE O.routing NOT LIKE 'FEDX%'
AND O.routing NOT IN ('UPS', 'UPS 1', 'UPS 2', 'UPS 3')
AND ISNULL(O.void,'') <> 'V'
AND L.location = @location
GROUP BY O.order_no, L.shipped, L.price, L.[location]
好的,这是我将水晶报告中的参数引用到存储过程的步骤。
在存储过程中添加参数声明,如下所示:
更改程序 [dbo].[a_ras_TruckSummary_SP]
@location VARCHAR(10),
@dateshipped 日期时间
然后导航到水晶报表生成器并选择“数据库>>>>数据库验证”。这将刷新数据库连接并将您的参数显示为一个对话框。从那里您将输入您的值以测试参数
如果他们测试正常,对话框将关闭,然后您可以导航到“字段资源管理器”,在“参数字段”下,您现在将看到您的新参数。
然后,您可以简单地将它们拖到报告中。