微软RDLC报表打印

摘要:
因此,我们必须停止工作,专注于RDLC打印的问题。以下是打印的效果。RDLC用于印刷已经一年了。以前,只有几次描述性文本,他们没有太多注意。地球上最强大的武器是人类的火焰。分类:由于工作原因,RDLCReportSharePointPerformancePoint开发实例有一段时间没有发送新文章。最近,SharePointPerformancePoint用于制作一些报告以与您分享经验。
  关于微软RDLC报表打印时文字拉伸问题(Windows server 2003 sp2)

最近我们开发的打印服务频频出现打印文字拉伸问题,客户意见络绎不绝,最为明显的是使用黑体加粗后 “2.0份” 打印出来后小数点几乎看不见了,用户很容易误认为 “ 20份” 。所以问题达到了不得不停下手上的工作,集中研究RDLC打印问题。

下面是打印出来的效果

微软RDLC报表打印第1张

由于使用RDLC打印已经是1年前的事了,以前都是偶尔出现几次都是说明性文字,也都没太关注。

到底是什么原因呢?

我在网上收了不少资料,都没有讲到重点,最后在Stack OverFlow的一个问题中看到了些初略说法(http://stackoverflow.com/questions/4136484/report-viewer-font-getting-stretched-on-windows-server-machine-only)

大概是这么理解:由于远程桌面连接导致分辨率不同,所以Windows在处理RDLC报表转换成图片打印时对文字处理出现瑕疵。

经过反复测试,最后总结了如下规则

操作系统及配置:Windows server 2003 sp2(32位),SQLServer 2008 R2, .ENT Framework 4.0

SERVER 2003系统默认允许多用户(session)同时访问计算机

假设我有电脑 A(2003 本机安装了上述系统配置) 和 B(远程电脑与A的显卡不同(或分辨率不同)),下面的测试将说明问题如何出现

1. 没有问题   打印程序在A上打开,在B上通过多例模式(开新的Session),从AB上下打印任务到DB

2. 有问题      打印程序在A上打开,在B上通过单例模式(打开后A会被注销),从AB上下打印任务到DB

3. 有问题      打印程序在B上通过单例或多例模式打开,在AB上下打印任务到DB

可以看出只要是通过远程Session打开的打印程序就会出现打印拉伸问题。

 
The most powerful weapon on earth is the human soul on fire.
 
 
 
分类: RDLC Report
SharePoint PerformancePoint开发实例
 

由于工作的原因,有一段时间没有发新的随笔了,最近使用了SharePoint PerformancePoint做了一些报表,与大家分享经验。

本文完全原创,转载请说明出处,希望对大家有用。

阅读目录:

  • 开发环境
  • BI目标
  • BI实施
  • 总结

一、开发环境

操作系统:Windows Server 2008R2

数据库:SQL Server 2008R2

SharePoint Server 2010

二、BI目标

需求:

  • 根据销售数据显示所选年份的月销售额
  • 根据销售数据显示所选年份销售额前十的供应商
  • 根据销售数据显示所选年份每个供应商每月的销售额(包括合计)

根据上述需求,我们可以分析出此报表需要至少2个纬度:时间维度,供应商维度。

首先设计报表的呈现方式,为了更好的对比所选年份的月销售额,我们选择柱状图。

销售额前十的供应商选择饼图来体现不同的百分比。

每个供应商每月的销售额选择表格来呈现。

其他问题:多数据源,需要使用ETL将多个数据源数据汇总。

三、BI实施

首先使用SSIS创建ETL,用来将多个数据源处理后汇总。

这里我们不做详细解释,因为SSIS功能很强大,希望大家多做研究,我只对我自己做的进行截图并解释一下:

微软RDLC报表打印第2张

上图显示的是ETL中最重要的数据处理阶段,根据需求,我们从3个不同的数据库中取得数据,经过数据转换(为了数据格式统一),汇总到新的数据库(可以认为是数据仓库)。

接下来是重要的数据分析阶段,使用SSAS构建多维数据库

根据BI目标中的需求,我们根据ETL汇总的数据生成2个纬度的Cube

微软RDLC报表打印第3张

分别是Dim.date,Dim.supply

Dim.date维度中包括有日->月->年

Dim.supply维度主要是供应商的信息

微软RDLC报表打印第4张

到这里我们数据已经准备就绪,需要使用PerformancePoint来呈现数据

首先要新建数据源,连接我们之前建好的多维数据库

微软RDLC报表打印第5张

接下来是具体的报表操作

1、新建1个年份筛选器(year)

微软RDLC报表打印第6张

按照个人需求,选择筛选器的值,这里选择成员选择器,也就是说筛选器的值是由多维数据库中的维度填充。

2、新建一个Analytic chat报表

如图:

微软RDLC报表打印第7张

我们可以使用PerformancePoint提供的可视化设计页面,将所需要呈现的数据分别拖拽到行、列以及数据背景

如图:

微软RDLC报表打印第8张

3、最后新建一个Dashboard,用来承载我们做好的报表

效果如图:

微软RDLC报表打印第9张

按照需求,我们还需要做2个报表,制作方法与上面的示例相同,仅数据选择上有些不同,按照自己的需要添加即可。

有时我们只用PerformacePoint提供的可视化界面无法实现我们想要的,可以点击界面中的Query(查询)标签,可以看到报表的MDX,这样就可以更加自由的编辑了。

需要注意的是,如果自定义了MDX,参数也需要自定义,否则无法识别。

如图:

微软RDLC报表打印第10张

这样我们的报表已经创建完成,剩下的工作就是测试和优化了。

下面贴一下我做好的页面效果:

微软RDLC报表打印第11张

四、总结

PerformancePoint优势:

  • 作为报表呈现的一种方式,简单、丰富、直观
  • 支持多种数据源
  • 支持分析报表钻取

PerformancePoint限制:

  • 报表样式无法定制;
  • 只能作为基础报表的一种方式,同时必须承载于SharePoint
Fight or flight ^-^!
即使做个独行侠,也要与众不同
 
 
标签: SharePoint

免责声明:文章转载自《微软RDLC报表打印》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Zircon(转载)uCOS-II的嵌入式串口通信模块设计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关系数据库和NoSQL结合使用:MySQL + MongoDB

Home Page作者使用一个案例来说明MySQL+MongoDB结合使用,发挥各自所长,并且认为他们互补性很强。当然,这其中不可避免引入DDD中的编程设计模式 Repository仓储模式,通过它能够将数据存储方式和应用分离开来,这样,我们的程序就不受限于任何存储方式,无论是NoSQL或关系数据库。这个案例是一个按效果付费Pay-for-use的分析案例...

django 后端JsonResponse返回json数据给前端完美接收

1.后端代码编写 from django.http import JsonResponseif True: message = {"code":0,"msg":"同步公有云机器成功,刷新页面获取最新数据!"} else: message = {"code":1,"msg":"同步公有云机器失败,项目配置中还没有配置[项目云id]"} ret...

软考笔记第三天之数据库系统

三级模式-两级映射 数据库模型(概念模式[用户视图]、外模式[DBA视图]、内模式[内部视图]) 外模式-概念模式映射,概念模式-内模式映射 E-R模型,实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 集成的方法: 多个局部E-R图一次集成。 逐步集成,用累加的...

tp5 高效率随机抽取数据(不重复)

public function getRandTable(){ $num = 5; //需要抽取的默认条数 $table = 't_marclog'; //需要抽取的数据表 $countcus = Db::name($table)->count(); //获取总记录数 $min = Db::name(...

Oracle 修改现有列的数据类型

如果表中有数据,Oracle是不能修改其数据类型的。但可以通过新建一个临时列,将要修改列的数据复制到临时列中,删除原列再修改临时列的名字。这样说好像有点拗口,分步解说一下。 表AC_REG中有列:is_active,原来是字符类型的,目标是将它改为数值类型 ---目标将IS_ACTIVE改为数值型 --新增一列 alter table AC_REG a...

SQL Server数据库之间进行数据导入导出

在SQL Server数据库之间进行数据导入导出   (1).使用SELECT INTO导出数据 在SQL Server中使用最广泛的就是通过SELECT INTO语句导出数据,SELECT INTO语句同时具备两个功能:根据SELECT后跟的字段以及INTO后面跟的表名建立空表(如果SELECT后是*, 空表的结构和FROM所指的表的结构相同);将SEL...