SSRS进阶系列:报表查询参数如何支持复选下拉框

报表查询参数如何支持复选下拉框呢?就像这样:

12-22-2011 18-12-41

首先要在Data页面加一个数据集,取得这个列表:

12-22-2011 18-03-31

加了这个DataSet以后转到Layout页面,菜单Report – Report Parameters进入报表参数页面。加一个parameter参数,这样配置:(注意Dataset只有一个Field)

12-22-2011 18-15-31

整个报表用存储过程作为数据源,这个存储过程必须有个参数来接受这个报表的参数:

@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)基础知识可以下载这个文档。

posted on 2011-12-22 18:22 Mainz 阅读(148) 评论(0) 编辑 收藏

导航

公告

统计