假如上图是我们的实现目标,首先需要构建报表数据源(.rds文件),设计参数数据集及报表取数结果集,如下图:
参数“体检单位”数据集(疾病参数类似),此处ID为-2名称为<空>作为默认值处理(RS的多值参数无法默认空,只能这样特殊处理):
还有结果数据集如下图:
我们看到上图@RelatedPartyId对应到一个多值参数,还有一个内部参数@InnerRelatedPartyIds是与参数@RelatedPartyId相关的级联参数,目的是获取Id串(这里需要特别指出的多值参数@RelatedPartyId返回的并不是其Id串,类型不是字符串,是一个特殊的引用类型,用户选取单个值其返回Integer,否则返回类似这样的: (1,2,3) 可以用在SQL条件的In子句上。
下面设计报表布局:
可以看到一个很有用的表达式设置,它可以显示多值参数文本串,那就是Join(Parameters!RelatedPartyId.Label)即在文中开始显示报表结果报表子标题所示,很多报表常用的表现手段。
还有前端报表界面参数设置如下:
以及级联参数设置:
上面表达式用到了自定义函数:
报表还引用了自定义程序集(需要部署到下面路径,根据实际安装路径可能不同):
copy RSCustomLib.* "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"
copy RSCustomLib.* "C:\Program Files\Microsoft SQL Server\MSSQL.4\Reporting Services\ReportServer\bin"