Dynamic 报表服务开发

1.下载SSDT-Setup-CHS,勾选1、3项,全勾也可以

2.装好之后,打开新建报表服务

 

 

 

 

@实体ID为输入的参数

做完报表之后,右键解决方案,先清理在生成

 

 

选择报表文件添加即可

子报表

 

 

 

可能出现的问题

上面的乱码为中文,但是输入中文未显示中文,其原因是字体

 

 

 

报表显示多选选项集时不能显示数据库的信息,需要显示数据库对应数据信息

新建函数(主外键的话,就join连接就行了)

 

--这个函数  返回的是一个表
alter function [dbo].[GetSubsidiaryBusinesses]
(
@str NVARCHAR(500),--要分割的字符串
@fengefu NVARCHAR(20)--进行分割的符号
)returns @table table(val NVARCHAR(50))
AS
begin 
    declare @index INT,@startsplit INT,@id INT,@sum nvarchar --@index分隔符所在的位置的下标 @startsplit 每次分割开始的位置
    select @index=charindex(@fengefu,@str),@startsplit=1,@id=1
    where @index>0
    begin
        if @id>1  --第一次循环之后 都执行这个方法体中的代码
        begin 
            select @startsplit=@index+LEN(@fengefu) --分割开始位置等于 之前的字符下标位置+字符本身的长度
            select @index=CHARINDEX(@fengefu,@str,@startsplit)
            
        end 
        if @index>0   --第一次循环 截取位置从@startsplit=1开始  
            begin 
               select @sum=@sum+substring(@str,@startsplit,len(@str)-@startsplit+1)+';' --要截取的字符串   开始位置  要截取的长度
            END 
        else 
        begin   --最后一次循环  此时由于匹配不到分割字符 @index=0 截取剩余的字符串
        select @sum=@sum+substring(@str,@startsplit,len(@str)-@startsplit+1)+';'
            insert into @table values (@sum)
        end 
        select @id=@id+1
    end
    return 
end

--select (Cast(字段名 as varchar(20)) +'('+ Cast(字段名 as varchar(20))+')')将字段组合显示为第一个字段
SELECT (cast((SELECT val FROM [GetSubsidiaryBusinesses](new_test_duoxuan,',') where id=2 ) as varchar))+';'+
(cast((SELECT val FROM [GetSubsidiaryBusinesses](new_test_duoxuan,',') where id=3 ) as varchar))+';'+
(cast((SELECT val FROM [GetSubsidiaryBusinesses](new_test_duoxuan,',') where id=4 ) as varchar)) as 多选选项集,
case new_record_updatemodth when 1 then 'A'
                 when 2 then 'B'
                 when 3 then 'C'
                 end 单项选项集 
FROM new_recordingBase

测试数据——》已显示结果(完成!)

原文地址:https://www.cnblogs.com/LanHai12/p/15257963.html