如果我们安装了sqlserver2008 R2,将会自动安装一个报表开发工具

不要以为此报表开发工具只适合于sqlserver2008,其实在sqlserver2012中也是支持的,事实上我现在项目中就是使用的sqlserver2012。

使用此工具进行报表开发,将会十分快速而且方便。这里我通过一个综合实例来演示它的使用技巧,可以毫不夸张的说,如果你能使用此工具把这个Demo做出来,那么工作中遇到的80%报表,你都能够使用此工具进行开发了。

先来看下我们要实现的效果:

报表中使用到的表及字段:

  1. --table 用水水量:hx_t_waterusedamount
  2. --字段 开户信息:hx_fcustomerandmeterrelaid 主键:hx_t_WaterUsedAmountId  水表:hx_fmeterid 区段:hx_fzone 实用水量:hx_famount
  3. --估水原因:hx_festimateamountreason  结算水量:hx_fpayamount
  4. --抄表类型hx_frecordtype (估水:,000,001 未抄见:100,000,002 正常:100,000,000 预付费卡表估水:100,000,003)
  5. --水量状态:hx_fstate(计划:100,000,000,已录入水量:100,000,001,等待录入金额:100,000,002,已生成应收:100,000,006,等待审核:100,000,004)
  6. <span style="font-family:宋体;">--</span>本次抄表止度:hx_freading
  7. --用水年份:hx_fyear  用水月份:hx_fmonth 次:hx_FTimes
  8. --本次抄表时间:hx_frecorddate  预计水费:hx_fprepayment 预计代收费:hx_fpreproxypayment
  9. --table 用水类别hx_t_watercategory
  10. --field 统计一类:hx_fstatcategoryoneid 主键:hx_t_watercategoryid 名称:hx_fname
  11. --table 用水性质hx_t_waterproperty
  12. --field 主键:hx_t_waterpropertyid 用水类别:hx_fwatercategoryid
  13. --table 抄表班组归属hx_t_teamattribution
  14. --字段主键:hx_t_teamattributionid 抄表班组信息:hx_fteamid 征费所信息:hx_flevyinstituteid

好了,现在正式开始

从效果图上面可以看出,此报表,我们使用到了两张表来展示,而且这里是使用到了两个数据集,但是他们的查询条件是一致的。

我们先来看上面那张表的展示

我们来看SQL:

  1. declare @begin_date datetime
  2. declare @end_date datetime
  3. select @begin_date = getdate()
  4. declare @BusinessunitId uniqueidentifier --征费所
  5. --set @BusinessunitId='6A2537DD-B87A-E411-93FE-002590622897' ----第十五收费所
  6. DECLARE @TeamId uniqueidentifier --抄表班组
  7. --SET @TeamId='18ACBD81-5B45-E411-9402-6CAE8B22702D' --第十五收费所(零散查表组)
  8. DECLARE @StarDate datetime
  9. DECLARE @EndDate datetime
  10. SET @StarDate =  convert(datetime,'2015-01-15 00:00:00',20)
  11. SET @EndDate = convert(datetime,'2015-01-25 23:59:59',20)
  12. DECLARE @sHMS nvarchar(10)
  13. DECLARE @eHMS nvarchar(10)
  14. SET @sHMS='00:00:00';
  15. SET @eHMS='23:59:59';
  16. DECLARE @ZoneNO varchar(30)
  17. -----------------SQL正文----------------------------------------------------------执行时间:
  18. DECLARE @strSDate nvarchar(50),@strEDate nvarchar(50)
  19. DECLARE @StartDateTime datetime,@EndDateTime datetime
  20. SET @strSDate=CONVERT(varchar, @StarDate, 23)+' '+@sHMS
  21. SET @strEDate=CONVERT(varchar, @EndDate, 23)+' '+@eHMS
  22. SET @StartDateTime=convert(datetime,@strSDate,20)
  23. SET @EndDateTime=convert(datetime,@strEDate,20)
  24. -------------------------------------上面的表-------------------------------------------------
  25. select
  26. 1 WaterMeterCount, --表数
  27. w.hx_fpayamount, --水量
  28. w.hx_fprepayment,--预计水费
  29. w.hx_fpreproxypayment,--预计代收费
  30. c.hx_fname --用水类别
  31. from
  32. hx_t_waterusedamount w --水量
  33. INNER JOIN hx_t_teamattribution n --抄表班组归属
  34. ON w.OwningTeam=n.hx_fteamid
  35. AND isnull(w.hx_fzone,'') = isnull(isnull(@ZoneNO,w.hx_fzone),'')
  36. AND isnull(w.OwningTeam,'00000000-0000-0000-0000-000000000000') = isnull(isnull(@TeamId,w.OwningTeam),'00000000-0000-0000-0000-000000000000')
  37. AND w.hx_fpayamount>0 --结算水量
  38. AND w.hx_frecorddate BETWEEN @StartDateTime AND @EndDateTime
  39. AND isnull(n.hx_flevyinstituteid,'00000000-0000-0000-0000-000000000000') = isnull(isnull(@BusinessunitId,n.hx_flevyinstituteid),
  40. '00000000-0000-0000-0000-000000000000')
  41. LEFT JOIN hx_t_waterproperty p --用水性质
  42. on w.hx_FWaterPropertyID=p.hx_t_WaterPropertyId
  43. LEFT JOIN hx_t_watercategory c --用水类别
  44. on p.hx_FWaterCategoryID=c.hx_t_WaterCategoryId
  45. -----------------END----------------------------------------------------------------------------
  46. select @end_date = getdate()
  47. select datediff(ms,@begin_date,@end_date) as '用时/毫秒'

执行结果如下:

可以看出这是十分常见的纵表变横表了,如果使用纯sql来实现转换效果的话,就有得写一连串复杂的sql语句了,但是通过使用此报表开发工具,我们可以轻而易举的将其纵向显示结果变为横向显示结果。

操作步骤如下:

1、打开此报表开发工具,文件——新建——项目

2、右键单击右侧解决方案中的报表目录,然后一直下一步,

但是考虑到矩阵的界面配置甚为反锁,这里我们先选择表格吧,然后一直点击下一步,直到完成

1、把界面上面的表格删掉,然后从左侧工具栏拖入一个矩阵,

选中“数据”单元格,右键——插入行——组内部——下方,添加4行,然后右键——插入列——组外部(因为要统计合计)

列这个地方,选择hx_fname这个字段,从sql中可以看到hx_fname这个字段是我们需要转换为横表展示的字段,然后数据这里,选中要聚合的字段。

右侧报表数据,

这里自动生成了许多参数,这些参数是因为我们刚才添加的SQL语句里面用到了,注意看名称,和我们刚才声明的SQL语句是一样的。

选中属性,右键单击,可以查看参数的配置信息

这些东西大家多去点一下,自然就熟悉了,涉及的东西太多了,我一下子也说不完。

这里有两个参数是有级联关系的,我就先说下

我们来看下这两个参数的配置,这两个参数都是以下拉框的形式显示的,而且值都是取自数据库中。

先看参数:BusinessunitId

这个数据集哪里来的?我们可以自己添加

再来看下参数:TeamId

右键单击空白处——创建占位符

批量修改可以直接通过这里进行修改,

否则,只能一个文本框一个文本框属性进行修改了。#代表千分位显示,后面的数字代码保留小数位数,0代表整数

数量/水量:#,0

单价:0.00

金额:#,0.00

报表中下面那个程序集的操作类似,这里就不多说了,东西太多了。

SQL如下:

    1. ----------------SQL正文----------------------------------------------------------执行时间:
    2. DECLARE @strSDate nvarchar(50),@strEDate nvarchar(50)
    3. DECLARE @StartDateTime datetime,@EndDateTime datetime
    4. SET @strSDate=CONVERT(varchar, @StarDate, 23)+' '+@sHMS
    5. SET @strEDate=CONVERT(varchar, @EndDate, 23)+' '+@eHMS
    6. SET @StartDateTime=convert(datetime,@strSDate,20)
    7. SET @EndDateTime=convert(datetime,@strEDate,20)
    8. ----------------------------------下面的表------------------------------------------------------
    9. if object_id('tempdb..#t_estimateamountreason') is not null drop table #t_estimateamountreason
    10. select * into #t_estimateamountreason from
    11. (select distinct t1.Label,t2.Value from MetadataSchema.LocalizedLabel t1
    12. inner join MetadataSchema.AttributePicklistValue t2
    13. on t1.ObjectId=t2.AttributePicklistValueId inner join MetadataSchema.OptionSet t3 on t2.OptionSetId=t3.OptionSetId
    14. where t3.Name='hx_estimateamountreason_values' and t1.ObjectColumnName='DisplayName' and t1.LanguageId=2052) t
    15. --select * from #t_estimateamountreason
    16. select
    17. 1 MeterCounts, --水表块数
    18. isnull(e.Label,'其它') ReasonName  --估水原因名称
    19. from hx_t_waterusedamount w --水量
    20. INNER JOIN hx_t_teamattribution n  --抄表班组归属
    21. ON w.OwningTeam=n.hx_fteamid
    22. AND isnull(w.hx_fzone,'') = isnull(isnull(@ZoneNO,w.hx_fzone),'')
    23. AND isnull(w.OwningTeam,'00000000-0000-0000-0000-000000000000') = isnull(isnull(@TeamId,w.OwningTeam),'00000000-0000-0000-0000-000000000000')
    24. AND w.hx_fpayamount=0 --结算水量
    25. AND w.hx_frecorddate BETWEEN @StartDateTime AND @EndDateTime
    26. AND isnull(n.hx_flevyinstituteid,'00000000-0000-0000-0000-000000000000') = isnull(isnull(@BusinessunitId,n.hx_flevyinstituteid),
    27. '00000000-0000-0000-0000-000000000000')
    28. LEFT JOIN #t_estimateamountreason e --估水原因
    29. ON e.Value=w.hx_festimateamountreason
    30. UNION ALL
    31. select 1 MeterCounts,e.Label ReasonName from #t_estimateamountreason e
    32. if object_id('tempdb..#t_estimateamountreason') is not null drop table #t_estimateamountreason
    33. ----------------END----------------------------------------------------------------------------

ReportingServies——SQLServer报表开发综合实例的更多相关文章

  1. 使用VS2012 开发SharePoint 2013 声明式的action(activity) 综合实例

    本文讲述使用VS2012 开发SharePoint 2013 声明式的action 综合实例. 需求同: http://blog.csdn.net/abrahamcheng/article/detai ...

  2. 【BIEE】BIEE 11g BI Publisher报表开发实例

    环境准备 JDK下载地址:直接去百度软件中心下载即可 BIPublisher下载地址:http://pan.baidu.com/s/1bpk03Jh 本例子中以win7 32位操作系统为例 1.安装已 ...

  3. 主窗体里面打开子窗体&&打印饼图《Delphi 6数据库开发典型实例》--图表的绘制

    \Delphi 6数据库开发典型实例\图表的绘制 1.在主窗体里面打开子窗体:ShowForm(Tfrm_Print); procedure Tfrm_Main.ShowForm(AFormClass ...

  4. 报表开发之扩展GROUP BY

    在实际运用中.比方在数据仓库中,常常须要对数据进行多维分析.不仅须要标准分组的结果(相当于 GROUP BY),还须要不同维度的小计(简单 GROUP BY 中取部分列分组)和合计(不分组).从而 提 ...

  5. 犀利的报表系统,发票据与报表开发的快速利器,AgileEAS.NET SOA中间件GReport使用指南

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  6. BIEE报表开发

    (1)报表开发实例结果图 (2)开发报表步骤: (1)创建分析 (2)创建仪表盘提示 (3)创建仪表盘并发布 登录网址,输入用户名和密码 1) 新建——>分析——>选择主题区域——> ...

  7. 【Reporting Services 报表开发】— 表达式

    一.常用的SSRS原始函数可以打开文本框的表达式中看到,如图1 图1 如下为SSRS中设计报表时常用的运算函数: 运算符/函数 说明 + 前后位数字则为加法,前后为字符串则为链接符号 - 数值减法 * ...

  8. VS2010中水晶报表应用及实例

    原文:VS2010中水晶报表应用及实例 基本分类如下:第一部分:VS2010简介VS2010是微软的提供的一套完整的开发环境,功能也是相当的大微软宣布了下一代开发工具和平台的正式名称,分别称为“Vis ...

  9. Grid++Report 报表开发工具

      Grid++Report 报表开发工具   版本 更新日期 大小 下载 说明 Grid++Repoert6.0.0.6 2015/08/08 16.0M [下载] 锐浪报表工具最新版本,新增功能说 ...

随机推荐

  1. 更新日志 - BugHD 新增邮件告警功能

    最近 BugHD 又新增了一些功能,包括邮件告警. issue 分享. issue 备注等,同时也做了性能优化.希望能够帮助你更高效地收集解决应用崩溃. BugHD 新增功能 1.邮件告警 除了 We ...

  2. 在configure distribution时遇到错误,不能打开sql agent

    今天在配置Distribution时,遇到一个错误,不能打开sql agent,详细错误信息如下: SQL Server blocked access to procedure 'dbo.sp_set ...

  3. 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架

    一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG ...

  4. SilverLight 控件ListBox中的SelectionChanged事件

    出现的问题: ListBox 中给了它一个这样的事件SelectionChanged="NumBasket_SelectionChanged" 也就是单击某行就会触发的事件,要实现 ...

  5. CSS全屏布局的5种方式

    × 目录 [1]float [2]inline-block [3]table[4]absolute[5]flex[6]总结 前面的话 全屏布局在实际工作中是很常用的,比如管理系统.监控平台等.本文将介 ...

  6. Ubuntu下安装配置JDK1.7

    1.下载JDK 对于下载方法,可以使用命令,也可以手动下载.本人采用手动下载jdk的方式. 下载jdk-7u7-linux-i586.tar.gz到Ubuntu桌面. 2. 将下载的文件移动到这个文件 ...

  7. 让Team Foundation Server/TFS自动记住用户名密码解决方案

    在使用Team Foundation Server(以下简称TFS) 的时候,在每次打开Visual Studio TFS时候,需要输入用户名和秘密,比较麻烦.现提供一种方法可以解决这个问题: 依次执 ...

  8. MySQL性能优化的最佳21条经验

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  9. FlashFXP(强大的FXP/ftp上传工具)V5.0.0.3722简体中文特别版

    flashfxp是功能强大的fxp/ftp软件,融合了一些其他优秀ftp软件的优点,如像cuteftp一样可以比较文件夹, FlashFXP是一款功能强大的FXP/ftp上传工具, FlashFXP集 ...

  10. Tools - Markdown

    Markdown 轻量级标记语言,使用易读易写的纯文本格式和类似HTML的标记语法来编写具有一定的格式的文档. wiki - Markdown 三分钟学会书写格式良好的笔记(Markdown) 为知笔 ...