专门研究各种报表工具软件和BI商业智能分析工具

存储过程多值参数报表

在使用Wyn Enterprise存储过程返回结果作为报表数据集时,经常会用到多个参数值的场景。
例如,需要用存储过程从销售明细表中,根据销售大区和支付方式返回查询结果。
其中:销售大区和支付方式也均为多值参数。

此种场景的核心是对参数中in值的处理。
1.首先查看数据结构;


2.在数据库中定义处理参数值的函数和存储过程;
由于参数值的为:'西北,华北',需要用自定义函数处理成 '西北','华北';
自定义参数脚本:
create  function   [dbo].[f_split](@c   varchar(2000),@split   varchar(2))   
returns   @t   table(col   varchar(20))   
as   
    begin     
      while(charindex(@split,@c)<>0)   
        begin   
          insert   @t(col)   values   (substring(@c,1,charindex(@split,@c)-1))   
          set   @c   =   stuff(@c,1,charindex(@split,@c),'')   
        end   
      insert   @t(col)   values   (@c)   
      return   
    end

存储过程脚本:
create proc [dbo].[sp_qry_sales]
(
@area nvarchar(255)
,@province nvarchar(255)
)
as
select * from Demo_销售明细
where 1=1
and 销售大区 in (select * from f_split(@area,',') )
and 支付方式 in (select * from f_split(@province,',') )

3.创建报表,在报表中创建内嵌数据集和参数;
  3.1新建两个数据集分别获取销售大区和支付方式,作为参数可选值;
   
销售大区:select distinct 销售大区 from Demo_销售明细
支付方式:select distinct 支付方式 from Demo_销售明细

3.2 添加报表参数,并将上一步的数据集结果分别做为报表参数的可选值。
           

  3.3调用存储过程,编写返回数据的数据集。
  调用存储过程:exec sp_qry_sales @p1, @p2  其中:两个参数的参数值需使用Join函数用逗号进行数组拼接,=Join(Parameters!多值参数1.Value,",")
   

4.预览查看报表。

posted @ 2020-11-03 11:45  智能报表工具知识园地  阅读(166)  评论(0编辑  收藏  举报