SSRS进阶系列:报表查询参数如何支持复选下拉框
报表查询参数如何支持复选下拉框呢?就像这样:
首先要在Data页面加一个数据集,取得这个列表:
加了这个DataSet以后转到Layout页面,菜单Report – Report Parameters进入报表参数页面。加一个parameter参数,这样配置:(注意Dataset只有一个Field)
整个报表用存储过程作为数据源,这个存储过程必须有个参数来接受这个报表的参数:
@QueryParam NVARCHAR(MAX)
这个存储过程里面要Split逗号分隔的内容,SQLServer加个Function来Split逗号分隔的字符串
1: CREATE FUNCTION [dbo].[_SplitString]
2: (
3: @sString nvarchar(max),
4: @cDelimiter nchar(1)
5: )
6: RETURNS @tParts TABLE ( part nvarchar(max) )
7: AS
8: BEGIN
9: IF @sString is null RETURN
10: DECLARE @iStart INT,
11: @iPos INT
12: IF SUBSTRING( @sString, 1, 1 ) = @cDelimiter
13: BEGIN
14: SET @iStart = 2
15: INSERT INTO @tParts
16: VALUES( null )
17: END
18: ELSE
19: SET @iStart = 1
20: WHILE 1=1
21: BEGIN
22: SET @iPos = CHARINDEX( @cDelimiter, @sString, @iStart )
23: IF @iPos = 0
24: SET @iPos = LEN( @sString )+1
25: IF @iPos - @iStart > 0
26: INSERT INTO @tParts
27: VALUES ( SUBSTRING( @sString, @iStart, @iPos-@iStart ))
28: ELSE
29: INSERT INTO @tParts
30: VALUES( null )
31: SET @iStart = @iPos+1
32: if @iStart > len( @sString )
33: BREAK
34: END
35: RETURN
36:
37: END
在存储过程里面调用这个函数:
1: SELECT Part FROM _SplitString(@QueryParam , ',')
然后把它存到临时表或表变量就可以后续处理了。整个思路就是这样。
本文结束。
注:有关SSRS(SQL Server Reporting Services)基础知识可以下载这个文档。


