关于Repert Servcies下有判断时的参数有关问题
关于Repert Servcies下有判断时的参数问题
我现在如果有一个报表,命令类型是Text,配置了几个报表参数,如果是以下这个形式就执行成功:
但是如果我在这前面加上一系列的判断+赋值,就像这样
在预览的时候就会提示
“本地报表处理期间出错。处理报表时出错。XXX,必须声明标量变量@Year,必须声明标量变量@quarterxxxxxxxx”
让人非常想不明白,正常的T-SQL的话,怎么会前面加上几个判断就导致参数不生效呢?
------解决方案--------------------
你的日期取值不是好办法,每个月的最后一天应该用下月的第一天减去一天,不等于上月最后一天
------解决方案--------------------
"必须声明标量变量@Year,必须声明标量变量@quarterx"
楼主在哪里声明的这两个变量呢
------解决方案--------------------
楼主请再检查各参数类型是否设置正确:
@quarter、@TimeType必须为整形;
@Year、@startDate、@EndDate必须是日期型;
Reporting Services最强大的功能就是表达式了,我看了一下楼主的意思无非是想根据@quarter的值,让开始结束日期的默认值不同,所以建议楼主不要在数据集中去处理了,还是在参数的默认值里去设置表达式了。即@Year、@quarter设置成始终刷新,@startDate、@EndDate也设置成始终刷新,其默认值里分别用表达式来实现你最前面的那部分功能
我现在如果有一个报表,命令类型是Text,配置了几个报表参数,如果是以下这个形式就执行成功:
if(@TimeType=1)
begin
查询
end
else if (@TimeType = 2)
begin
查询
end
但是如果我在这前面加上一系列的判断+赋值,就像这样
if(@Year is not null and @quarter is not null)
begin
if(@quarter =1)
begin
set @startDate =convert(datetime, @Year+'-1-1')
set @EndDate=convert(datetime, @Year+'-3-31')
end
else if(@quarter =2)
begin
set @startDate =convert(datetime, @Year+'-4-1')
set @EndDate =convert(datetime, @Year+'-6-30')
end
else if(@quarter =3)
begin
set @startDate =convert(datetime, @Year+'-7-1')
set @EndDate =convert(datetime, @Year+'-9-30')
end
else if(@quarter =4)
begin
set @startDate =convert(datetime, @Year+'-10-1')
set @EndDate =convert(datetime, @Year+'-12-31')
end
else if(@quarter =5)
begin
set @startDate =convert(datetime, @Year+'-1-1')
set @EndDate =convert(datetime, @Year+'-6-30')
end
else if(@quarter =6)
begin
set @startDate =convert(datetime, @Year+'-7-1')
set @EndDate =convert(datetime, @Year+'-12-31')
end
else if(@quarter =7)
begin
set @startDate =convert(datetime, @Year+'-1-1')
set @EndDate =convert(datetime, @Year+'-12-31')
end
end
if(@TimeType=1)
begin
查询
end
else if (@TimeType = 2)
begin
查询
end
在预览的时候就会提示
“本地报表处理期间出错。处理报表时出错。XXX,必须声明标量变量@Year,必须声明标量变量@quarterxxxxxxxx”
让人非常想不明白,正常的T-SQL的话,怎么会前面加上几个判断就导致参数不生效呢?
------解决方案--------------------
你的日期取值不是好办法,每个月的最后一天应该用下月的第一天减去一天,不等于上月最后一天
------解决方案--------------------
"必须声明标量变量@Year,必须声明标量变量@quarterx"
楼主在哪里声明的这两个变量呢
------解决方案--------------------
楼主请再检查各参数类型是否设置正确:
@quarter、@TimeType必须为整形;
@Year、@startDate、@EndDate必须是日期型;
Reporting Services最强大的功能就是表达式了,我看了一下楼主的意思无非是想根据@quarter的值,让开始结束日期的默认值不同,所以建议楼主不要在数据集中去处理了,还是在参数的默认值里去设置表达式了。即@Year、@quarter设置成始终刷新,@startDate、@EndDate也设置成始终刷新,其默认值里分别用表达式来实现你最前面的那部分功能