找回密码
 立即注册

QQ登录

只需一步,快速开始

MatrixTian 讲师达人认证 悬赏达人认证

高级会员

141

主题

211

帖子

1380

积分

高级会员

积分
1380

微信认证勋章讲师达人元老葡萄悬赏达人

MatrixTian 讲师达人认证 悬赏达人认证
高级会员   /  发表于:2019-11-25 15:56  /   查看:3577  /  回复:0
本帖最后由 James.Lv 于 2023-1-5 18:47 编辑

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

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

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新建两个数据集分别获取销售大区和支付方式,作为参数可选值;
   image.png294087218.png
销售大区:select distinct 销售大区 from Demo_销售明细
支付方式:select distinct 支付方式 from Demo_销售明细

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

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

4.预览查看报表。
image.png373334349.png


评分

参与人数 1满意度 +10 收起 理由
YSLSX + 10

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部