Stimulsoft报表操作笔记(一):统计

一、引言

  报表大家应该都知道是什么,简单来说就是用表格、图表等格式来动态显示数据。现在web系统中很多需要使用到报表统计、打印功能等,将所需用到的数据绑定到指定的位置,然后分类汇总,这样查看起来更清晰,管理人员分析数据也一目了然。今天就我之前所做的项目总结一下使用stimulsoft报表的经验。

二、准备工作

  首先,需要安装Stimulsoft,我使用的版本是ultimate旗舰版本,当然这个软件是需要收费的,如果大家只需学习的话,可以去官网下载免费试用版。下载完成后,如果项目所需数据库是oracle,那么stimulsoft是连接不上免安装客户端绿色版的plsql的,需要安装oracle客户端(注:如果同时安装了32位和64位Oracle客户端,必须设置Oracle环境变量PATH只能指向64位客户端安装地址(默认会把32位和64位客户端安装地址都加上))。

  2.1 使用oracle中表、视图

  其次,因为Stimulsoft报表设计器本身不自带Oracle连接,所以需要以下步骤来添加oracle 的连接支持。

  1.打开Stimulsoft报表安装目录/Adapters/Oracle.zip,解压Oracle.zip,并且编译解压文件夹下面的Oralce项目,把编译的Dll拷贝至Stimulsoft报表安装目录/bin目录下面。(项目名称Stimulsoft.Report.OracleClient,Dll名称:Stimulsoft.Report.OracleClient.dll)

  2。添加完该dll后打开stimulsoft设计器就能看到oracle连接了

  

  3. 设置连接字符串,测试如果成功,Oracle就连接成功没有问题。如果连接保错请确认是否是64位操作系统安装了64位客户端,PATH地址是否设对

  

  4.根据Oralce连接->新建数据源->New Query ,这时并不像Sql Server数据库会自动加载数据表等信息,需要我们自定义sql查询语句。

  

  5.填写sql查询语句,建议不要点击运行查询构造器,如果要查询结果可以点击运行或者查询结果。

  

  6.点击获取所有列

  

  7.最后绑定数据源,将每个值的表达式赋值,赋值内容为该数据源下所获取到的列。

  2.2 使用Oracle存储过程

  使用Oracle存储过程的话,上面2.1的步骤就不需要了,如果是使用sqlserver存储过程,那上面的步骤还是必不可需的,sqlserver忽略步骤。

  首先新建数据源,不再是选择Oracle连接,而是选择Dataview,然后通过后台程序自定义数据源,将存储过程返回到Dataview中,这种方法比较方便。

  

  然后,与2.1步骤不同的是新增自定义列,因为没有连接到数据库中的表和视图,所以那些字段列只能在数据源中自己新增,然后和2.1中步骤7一样绑定列

  

  最后保存,生成报表mrt文件

  2.3 sqlserver文件转为oracle

  用vs等设计器打开后实则为xml文件,oracle和sqlserver的xml文件有所不同,如果原先是用sqlserver设计可以后期把它改成oracle设计,修改方法如下。

  

  1.将所有连接类型为Stimulsoft.Report.Dictionary.StiOracleDatabase转换为Stimulsoft.Report.Dictionary.StiSqlDatabase

  2.将所有数据源类型为Stimulsoft.Report.Dictionary.StiOracleSource转换为数据源类型为Stimulsoft.Report.Dictionary.StiSqlSource

  3.另存为Report_Sql.mrt

  4.最好打开设计文件预览并检查是否有SqlServer和Oracle表结构不匹配的情况(字段名称不同等)

三、问题汇总

  

  1. 能不能实现这种类型的报表?

可以先看下知识库里面的Demo,其中也包含了官网Demo。

  2. 能不能实现参数传递?

可以的。

1> 字典->添加变量(如myRowGuid)

2> 如果是需要使用stimulsoft自带的变量交互区域,则设置变量的Request From User和Allow User Values属性为true;如果不需要使用stimulsoft自带的变量交互区域,因为可能样式等与系统不匹配,则可以自己定义变量交互区域(查询区域),只需设置Request From User和Allow User Values属性为false。

3> 如何把变量值传给报表变量?

ü 在报表使用时(加大括号)

如 select * from customers where RowGuid = {myRowGuid}

ü 在aspx页面后台代码赋值:

StiReport report = new StiReport();

rreport.Load("Report.mrt");

report.Compile();

//初始化值

report["myvariable"] = 123;//如果是字符串要加上单引号‘123‘或者Sql语

//句写为‘{myRowGuid}‘

report.Render();

StiWebView1.Report = report;

  3. 能否改数据库连接?

可以的。

//清理数据库

report.Dictionary.Databases.Clear();

//增加数据库连接(Test为报表中定义的连接名称,MyDataConnectionString为实际的字符串连接)

report.Dictionary.Databases.Add(new StiSqlDatabase("Test",

"MyDataConnectionString"));

  4. 是否支持存储过程和函数获取数据源?

支持的。其中存储过程可以传参数、函数也可以传参数(函数查询文本如select * from dbo.func({VarA})

1> Sql Server存储过程设置:

查询文本:execute Pro {VarA}, {VarB}    类型选择:Table

2> Oracle存储过程设置链接地址:

 利用微软企业库带参数执行存储过程,最后用动态游标查看输出结果程序集

  5. 能够自定义数据源?

可以的。

Report.RegData(DataSet dataSet)、Report.RegData(DataTable dataTable)、Report.RegData(DataView dataView) 等等都可以给report自定义数据源。

但是对应的DataTable必须取个tableName,因为加载的时候以tableName来加载,如没有tableName会报错

例DataTable table = new DataTable("table");可以

但DataTable table = new DataTable();就会报错

  6. 为什么有些属性看不到?

在属性区域右击可以选择Basic、Standard、Professional(最全的)

  7. 怎么查看代码?

在代码标签下面查看。右击选择Show Auto Generated Code来查看自动生成的代码,可以看到自定义的表达式等。

  8. 如何做个性化开发?

1> 将report保存成.cs代码,修改.cs代码做个性化开发。保存.cs文件也可以是进行Debug查找错误。

2> 可以编写组件的事件,做个性化开发。(点击属性->事件标签)

  一般遇到出错无法找到错误原因时,可以保存成.cs文件进行Debug。

  report的加载和属性设置代码可以参考Stimulsoft_Reports.Net_FAQ.En.pdf文档

四、相关代码

  4.1 在aspx页面中

  1.首先需要在页头注册一下stimulsoft,因为我用的是2014.3.0.0版本的设计器设计的,所以这里注册也必须是这个版本,否则会报黄页

<%@ Register Assembly="Stimulsoft.Report.Web, Version=2014.3.0.0, Culture=neutral, PublicKeyToken=ebe6666cba19647a" Namespace="Stimulsoft.Report.Web" TagPrefix="cc1" %>

  2.其次在body中插入该控件,设置属性

 <cc1:StiWebViewer ID="StiWebViewer1" runat="server" Height="700px" Width="100%"
                        BackColor="White" BorderColor="White" ToolBarBackColor="240, 240, 240"
                        ScrollBarsMode="True" RenderMode="AjaxWithCache" />

  4.2 在.cs中

//TODO: Oracle需要添加这两段代码加载报表,sql无需添加
            StiConfig.Services.Add(new Stimulsoft.Report.Dictionary.StiOracleAdapterService());//数据源类型

            StiConfig.Services.Add(new Stimulsoft.Report.Dictionary.StiOracleDatabase());//连接类型

            string appDirectory = HttpContext.Current.Server.MapPath("");//获取文件绝对路径
            StiReport report = new StiReport();
            report.Load(appDirectory + "\\Report.mrt");

            DataSet dsGw = b_wm.GetWzInfoCount(DateFromToEx.FromText, DateFromToEx.ToText, ddlYear.SelectedValue, "01");//从存储过程获取岗位培训统计表
            DataSet dsYy = b_wm.GetWzInfoCount(DateFromToEx.FromText, DateFromToEx.ToText, ddlYear.SelectedValue, "02");//从存储过程获取业余学校统计表
            if (dsGw == null || dsYy == null)
                return;
            DataView dvGw = dsGw.Tables[0].DefaultView;//岗位培训所有的数据
            DataView dvYy = dsYy.Tables[0].DefaultView;//业余学校所有的数据
            report.RegData("GWPXXX", dvGw);//自定义岗位培训数据源
            report.RegData("YYXXXX", dvYy);//自定义业余学校数据源
            StiWebViewer1.Report = report;

如果不是系统不是用的oracle数据库连接,那么无需添加数据源类型和连接类型,也就是开头两句不需要,反之除了添加stimulsoft的引用,还需添加Stimulsoft.Report.OracleClient的dll,否则会报找不到网络路径,找了很久才发现是这个错误。

  存储过程的代码就不贴出来了,大意就是将所需要的参数传入存储过程中,通过一些条件插入临时表中,然后设置动态游标,查看程序结果集。

整个页面效果截图如下,为了方便,我将它暂时缩小了

五、结语

  今天大概就写这么多,不知道对于stimulsoft我的理解对不对,如果有人感兴趣可以和我探讨探讨。

时间: 2024-10-13 19:31:33

Stimulsoft报表操作笔记(一):统计的相关文章

SQL SERVER 时间相关操作笔记

1.DATEADD函数: A.  MSDN上的示例:http://msdn.microsoft.com/zh-cn/library/ms186819%28v=sql.90%29.aspx B. SQL2005上的示例 1 ----定义变量 2 DECLARE @start DATETIME,@end DATETIME 3 SET @start='2014-01-01' 4 SET @end='2014-06-16' 5 6 ---- 计算月份 7 SELECT DATEADD(YEAR,-6,@

Echarts字体和线条颜色设置操作笔记

这篇文章主要讲述Echarts设置字体和线条的颜色相关操作笔记,希望文章对你有所帮助,主要是自己的在线笔记吧.我在前面先放各种修改前后图片颜色的对照,后面再详细介绍代码.这样更方便阅读及读者知道,是否对自己有所帮助,其重点是如何在模板动态网页或JSP网站中插入Echarts图片.        1.修改标题及背景颜色    2.设置柱形图颜色 3.修改坐标轴字体颜色        4.设置Legend颜色 5.修改折线颜色    6.修改油表盘字体大小及颜色 7.柱状图文本鼠标浮动上的颜色设置

ChartDirector 报表操作

ChartDirector 报表操作 http://ww.evget.com/product/515/download下载到 .Net 的试用版,里面有所有的demo和帮助文档(那个什么软件不用管,有demo就行,).    本人乃新手,也没做过报表,网上随便找的下载地址,可惜文档全是英文,不过幸好有demo,也是嫌demo页面多,不知到哪个页面干啥的,索性就截了下图和简单标明了一下(可以根据页面名字知道其作用的,可惜本人是英语盲),图片很小莫怪,本人只是看个大概即可,具体还是得把demo都看一

树形报表支持动态列统计

汇总方式 选择 遍历字段 ,默认为数据汇总求和 字段语言 里填写要 在列 遍历 的字段 ,在后面的筛选条件里 增加 遍历字段='@now'  和其他条件 兼容原来的模式 树形报表支持动态列统计,布布扣,bubuko.com

Python简单操作笔记

Python 类型转换 str(),repr()|format() : 将非字符类型转成子串 int() : 转为整形 float() : 转为浮点型 list(s) : 将字串s转成列表 tuple(s) : 将字串s转成元组 set(s) : 将字串s转成集合 frozenset(s) : 将字串s转成不可变集合 dict(s) : 创建字典 其d必须是(key,value)的元组序列; chr(x) : 将整形转成字符 ord(x) : 将字符转成整形 hex(x) : 将整形转换成16进

【原】hive 操作笔记

1.建表: hive> CREATE TABLE pokes (foo INT, bar STRING);hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);由于很多数据在hadoop平台,当从hadoop平台的数据迁移到hive目录下时,由于hive默认的分隔符是/u0001,为了平滑迁移,需要在创建表格时指定数据的分割符号,语法如下:create table ooo(uid string,n

Linux Shell脚本与Vim常用操作笔记

本篇笔记记录最最基本的vim和shell操作. ShellScript能干什么 Shellscript类似与Windows的批处理,可以把很多指令汇总到一起,于是可以很容易地通过一个操作执行多个命令.很轻量,有效率. 在Vim中编写 Vim/Vi编辑器很强大,功能非常多,快捷键.指令更多,只需要知道最常用的就够了. Vi有3种工作模式 1.命令模式 进去之后的默认模式就是命令模式.能接受命令,但是不明文显示. 2.输入模式 命令模式按下a键就进入输入模式(还能按i.o.s等等).按Esc返回命令

Spark+hadoop+mllib及相关概念与操作笔记

Spark+hadoop+mllib及相关概念与操作笔记 作者: lw 版本: 0.1 时间: 2016-07-18 1.调研相关注意事项 a) 理解调研 调研的意义在于了解当前情况,挖掘潜在的问题,解决存在的疑问,并得到相应的方案. b) 调研流程 首先明确和梳理现有的疑问是什么,要通过调研解决什么问题,然后再去做调研,发现问题,再解决问题. c) 调研成果 最终需要得到结论与方案,以及详尽的论证理由,让别人信服. d) 书写格式 版本与作者以及时间可以以表格的形式,整齐明了. 结论简洁明了,

PHP文件操作笔记

//这个是有什么作用来这忘了 fopen('php://output','w'); 1. //demo zip格式的压缩文件上传function zqFileUpload($path,$proDir,$filename){ global $_configuration;// root_sys 得到项目的根目录 $dirpath=rtrim($_configuration['root_sys'],'/').$proDir; //上传的路径 if(!file_exists($dirpath)){ m