VS2012 BIDS之Reporting Service/SSRS 项目
最近资讯部门需要:网页/sharepoint提供事实表RawData下载功能,以下是项目大概:
工具:VS(BIDS)Report Designer+Reporting Service配置管理器
打开VS新建报表服务器项目,添加共享数据源并配置(DB数据库),共享数据源(基于需要,可有可无),共享数据集,属性查询类型可为文本/表/存储过程。
报表右键,添加项目--报表项目(为了灵活设计,不要选添加报表,会启动向导)--添加数据源(共享数据源)--添加数据集(新建属性选择存储过程),添加参数。
使用存储过程和SSRS报表结合的优势:
1.查询条件多样化、灵活。
2.存储过程离数据最近。
3.存储过程中的SQL可以进行软编译生成固定的优化的执行计划。
4.SQL可以输出,特别是组合各种筛选条件之后的SQL,便于查看。
5.可以分工开发,加快开发进度。存储过程和SSRS界面可以分给两个人开发。
6.业务逻辑有变化,但是返回的数据集字段没有变化的时候,只需要更新存储过程,而不需要同步更新SSRS报表。也就是说,业务和UI分开了,透明化了。
以下是数据集参数属性:
存储过程代码:<多个参数作为筛选条件时,灵活使用'OR'表达式>
USE [DM_ACCN_T1] GO /****** Object: StoredProcedure [dbo].[SSRS_RAWDATA_SELLTHRU] Script Date: 2016/5/11 14:07:42 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Ammy Guo -- Create date: 2016/05/09 -- Description: SSRS_RAWDATA_SELLTHRU -- ============================================= CREATE PROCEDURE [dbo].[SSRS_RAWDATA_SELLTHRU] -- Add the parameters for the stored procedure here @YEAR INT, @YEAR_QUARTER INT, @CON_REGION VARCHAR(20), @CON_SUBREIGON VARCHAR(20) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; SELECT A.YYYYMMDD, A.ITEM_CODE, A.DISTRIBUTOR_CODE, A.DEALER_CODE, A.CITY_SG_CODE, A.TR_MODEL, A.CHANNEL_TYPE_CODE, A.ST_QTY, A.ST_AMT, A.ST_AMT_USD, A.REGION_CODE, A.SALES_MONEY, A.SHIPTO_CITY_SG_CODE, A.ACER_PRICE, A.ACER_PRICE_USD, B.DAY, B.CURRENT_YEAR, B.MONTH, B.QUARTER, B.YEAR_QUARER, B.YEAR_MONTH, B.YEAR_WEEK, B.YEAR_WEEK_SEQ, B.MONTH_KEY, D.AREA_CN, D.CON_REGION_CODE, D.CON_REGION_CN, D.CON_SUBREIGON_CODE, D.CON_SUBREION_CN, D.KAB_REGION_NAME, D.KAB_SUBREGION_NAME, D.PROVINCE_CODE, D.PROVINCE_CN, D.DIJI_CITY_CODE, D.DIJI_CITY_NAME_CN, D.XIANJI_CITY_CODE, D.XIANJI_CITY_NAME_CN, D.CITY_CODE, D.CITY_NAME_EN, D.CITY_NAME_CN, D.CITY_FULL_NAME, D.CITY_LEVEL FROM vw_FS_SELLTHRU_ACT AS A INNER JOIN vw_CB_DATE AS B ON A.YYYYMMDD = B.DAY INNER JOIN CB_PRODUCT AS C ON A.ITEM_CODE = C.Part_Number LEFT OUTER JOIN CB_GEOGRAPHY AS D ON A.CITY_SG_CODE = D.CITY_CODE WHERE B.CURRENT_YEAR IN(@YEAR) AND (B.QUARTER_KEY IN (@YEAR_QUARTER) OR (999999=@YEAR_QUARTER)) AND (D.CON_REGION_CODE IN (@CON_REGION) OR ('ALL'=@CON_REGION)) AND (D.CON_SUBREIGON_CODE IN(@CON_SUBREIGON) OR('ALL'=@CON_SUBREIGON)) ORDER BY A.YYYYMMDD, B.MONTH_KEY,D.CON_REGION_CODE,D.CON_SUBREIGON_CODE END GO
报表设计界面:添加页眉页脚,页眉添加文本框,表达式="报表产生日期:"&Globals!ExecutionTime ,显示报表产生日期;页脚添加文本框,表达式="第" & CStr(Globals!PageNumber) & "页/共" & CStr(Globals!TotalPages) & "页",显示报表页数。
Tablix属性添加群组,可以直观快速的查看数据分类,并设置BackgroundColor,对于小计也可以设置文本框颜色的表达式,筛选某条件的单元格值显示特定颜色。
对于参数下拉框值得设计,可添加不通的数据集DataSet,例如<大参数Year,小参数Year_Quarter><大参数Region,小参数Subregion>
并设置参数属性,可用值->从查询中获取值,数据集/值字段(查询事实表SQL语句的字段)/标签字段 (显示在报表中的字段);默认值->指定值(如@YEAR_QUARTER参数的指定值为int类型的:999999)
--SELECT -1 AS [CURRENT_YEAR],N'全选'AS [CURRENT_YEAR_EXPRESSION] --UNION ALL SELECT DISTINCT [CURRENT_YEAR] AS [CURRENT_YEAR], CAST(([CURRENT_YEAR])AS VARCHAR) +N'年' AS [CURRENT_YEAR_EXPRESSION] FROM [DM_ACCN_T1].[dbo].[vw_CB_DATE] --WHERE [CURRENT_YEAR]='2016' ORDER BY [CURRENT_YEAR_EXPRESSION] DESC ------------------------------------------------------------------------------------------ SELECT 'ALL' AS [YEAR_QUARER],999999 AS [QUARTER_KEY] UNION ALL SELECT DISTINCT [YEAR_QUARER], [QUARTER_KEY] FROM [DM_ACCN_T1].[dbo].[vw_CB_DATE] WHERE [CURRENT_YEAR] IN(@YEAR) ORDER BY [QUARTER_KEY] DESC ----------------------------------------------------------------------------------------------- SELECT 'ALL'AS CON_REGION_CODE,'ALL'AS CON_REGION_EN,'ALL'AS CON_REGION_CN UNION ALL SELECT DISTINCT CON_REGION_CODE, CON_REGION_EN, CON_REGION_CN FROM CB_GEOGRAPHY ------------------------------------------------------------------------------------------ SELECT 'ALL'AS CON_SUBREIGON_CODE,'ALL'AS CON_SUBREGION_EN,'ALL'AS CON_SUBREION_CN UNION ALL SELECT DISTINCT CON_SUBREIGON_CODE, CON_SUBREGION_EN, CON_SUBREION_CN FROM CB_GEOGRAPHY WHERE (CON_REGION_CODE IN (@CON_REGION))
预览效果:
SSRS报表的部署:
属性,常规,会有很多URL需要填,如果是在本机模式下运行的报表服务器,TargetServerURL: http://cnshawspap02/reportserver:
另外需要打开ReportService配置管理器,配置服务器账户,数据源等。
如果是SharePoint集成模式下运行的报表服务器,要输入项目部署到SharePoint站点的URL地址:http://papreportcenter.accn.intra.acer.com/。
部署进度:
结果图:
sharepoint结果图: