这似乎很简单,我无法理解问题出在哪里。我之前已经这样做了,但最近没有这么做,所以我希望我错过了一些简单的事情。
我的2005 SQL框上有一个存储过程,它是一个简单的select语句,带有一些表连接以获取我需要的数据。
我想设置报表以使用变量@StartDate和@EndDate来提取发票日期。
当我在SSRS 2005中创建报表时,我知道我必须在报表向导的存储过程中声明并设置静态@StartDate和@EndDate值以允许其创建。
Declare @StartDate datetime
Declare @EndDate datetime
Set @StartDate = '2014-08-01'
Set @EndDate = '2014-08-31'
到目前为止,这一切都很好,我的报告已经创建,我可以在大约3秒内运行报告,并返回上个月预期的3000行数据。
问题发生在我从命令类型切换存储过程类型后:文本(它创建报告的默认类型)到存储过程并重新添加我的变量。(如果我把它留作文本,它会对我大喊大叫它期望参数@StartDate所以我知道我必须将它改为存储过程。
然后我进入存储过程并注释掉上面的4行并添加(在AS BEGIN之前): ( @StartDate datetime, @EndDate datetime )
然后我进入我的报告菜单,并将StartDate和EndDate参数创建为DateTime。
接下来,我进入我的数据集属性,在“参数”选项卡中添加@StartDate,选择报表变量StartDate和@EndDate,指向刚刚在“报表”菜单中创建的EndDate变量。
现在,当我查看报告时会出现问题,我选择上次使用的相同日期并运行报告,但报告会旋转并旋转并且永远不会完成。
这让我发疯,因为我知道我以前做过这件事。
答案 0 :(得分:1)
听起来您没有将开始日期和结束日期传递给存储过程,我怀疑它正在无条件地检索所有记录。
在存储过程中,您需要声明@StartDate
和@EndDate
作为参数
CREATE PROC usp_someSP @StartDate date, @EndDate date
AS
BEGIN
-- some code here .. select .....
END
在报告中,您传递开始日期和结束日期参数。
答案 1 :(得分:0)
它开始工作,我没有做任何改变。这就是我配置所有内容的方式:
存储过程声明变量:
存储过程条件:
SSRS报告参数:
SSRS数据集参数: