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, "");//从存储过程获取岗位培训统计表
DataSet dsYy = b_wm.GetWzInfoCount(DateFromToEx.FromText, DateFromToEx.ToText, ddlYear.SelectedValue, "");//从存储过程获取业余学校统计表
if (dsGw == null || dsYy == null)
return;
DataView dvGw = dsGw.Tables[].DefaultView;//岗位培训所有的数据
DataView dvYy = dsYy.Tables[].DefaultView;//业余学校所有的数据
report.RegData("GWPXXX", dvGw);//自定义岗位培训数据源
report.RegData("YYXXXX", dvYy);//自定义业余学校数据源
StiWebViewer1.Report = report;
如果不是系统不是用的oracle数据库连接,那么无需添加数据源类型和连接类型,也就是开头两句不需要,反之除了添加stimulsoft的引用,还需添加Stimulsoft.Report.OracleClient的dll,否则会报找不到网络路径,找了很久才发现是这个错误。
存储过程的代码就不贴出来了,大意就是将所需要的参数传入存储过程中,通过一些条件插入临时表中,然后设置动态游标,查看程序结果集。
整个页面效果截图如下,为了方便,我将它暂时缩小了
五、结语
今天大概就写这么多,不知道对于stimulsoft我的理解对不对,如果有人感兴趣可以和我探讨探讨。
Stimulsoft报表操作笔记(一):统计的更多相关文章
- stimulsoft Report报表使用笔记
1.使用设计器设计mrt报表模板,或者从其他文件复制修改 2.删除business object 数据源 3.使用代码添加数据源 ParcelChangeItem change = new Parce ...
- Python数模笔记-StatsModels 统计回归(4)可视化
1.如何认识可视化? 图形总是比数据更加醒目.直观.解决统计回归问题,无论在分析问题的过程中,还是在结果的呈现和发表时,都需要可视化工具的帮助和支持. 需要指出的是,虽然不同绘图工具包的功能.效果会有 ...
- Python数模笔记-StatsModels 统计回归(1)简介
1.关于 StatsModels statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化. 2.文档 ...
- Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- Centos7系统下修改主机名操作笔记
习惯了在Centos6系统下修改主机名的操作,但是Centos7下修改主机名的操作却大不相同!操作笔记如下: 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient) ...
- C语言 字符串操作 笔记
/* C语言字符串的操作笔记 使用代码和注释结合方式记录 */ # include <stdio.h> # include <string.h> int main(void) ...
- Oracle 日常应用和操作笔记
简单整理oracle日常应用笔记. 1.采用excel表格中的数据直接粘贴数据库记录中,默认会在后面加一个空格“”,操作完成后一定要记得对空格匹配然后修改一下. 2.查询数据库里的所有表结构, 采用s ...
- Netsharp快速入门(之14) 销售管理(报表A 热销滞销品统计)
作者:秋时 杨昶 转载须说明出处 4.5 销售报表 4.5.1 热销滞销品统计 1.建立部件工作区,主部件选择报表.统计表,辅部件选择查询方案 2.设置报表模版.选择主部件,选择工具-报 ...
- MongoDb的副本集搭建教程(个人操作笔记)
很多公司都在用MongoDb ,一直没有时间研究,最近好好的整了一下,做下笔记,直接上操作步骤,关于Mongodb的理论知识可以搜索其他资料,也可以联系我索取 mongoDB官方已经不建议使用主从模式 ...
随机推荐
- velocity中使用枚举
版权声明:本文为博主原创文章,转载请注明出处,欢迎使劲喷 一.为什么要在velocity中使用枚举 1.目前接触到的系统,枚举通常用来在程序中定义数据字典. 举个支付的例子,比如一个字段用来标识一条记 ...
- 机器学习基石 3 Types of Learning
机器学习基石 3 Types of Learning Learning with Different Output Space Learning with Different Data Label L ...
- 微信开发模式 api 接口文档简介
微信公众平台分为订阅号和服务号,服务号提供9大接口,需要通过微信认证后才能使用这些接口.认证费用300元.下面是接口的大致介绍: 1. 语音识别:通过语音识别接口,用户发送的语音,将会同时给出语音识别 ...
- PHP后台程序员工作到如今的一点心得
一个项目的建立,一开始一定要有需求文档,没有需求文档的项目注定会改来改去.还被骂的很惨.要时刻牢记一句话:口说无凭,有文档为证. 第一:开发语言的选择,PHP,当然还有JAVA,.NET你做的项目当然 ...
- scrapy学习笔记
1.scrapy用哪条命令行重新编辑已有的项目?cd projectname 2.如何在pycharm中开启scrapy?先在终端创建一个项目(即文件夹),再在pycharm中打开.
- iOS多线程——GCD
最近的项目遇到了很多多线程的问题,借此机会对GCD进行了一番学习并总结.首先说一下什么是GCD,GCD全称 Grand Central Dispatch,是异步执行任务的技术之一.开发者只需要定义想要 ...
- Docker 使用指南 (四)—— 数据卷的使用
一.数据卷的使用 有时候需要使用数据库,但是又希望它的数据能保存在本地,Docker中提供了数据卷可以供你方便的操作数据.数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用 ...
- HBuilder的webview操作
HBuilder的webview操作 webviewAPI文档:http://www.html5plus.org/doc/zh_cn/webview.html 创建新的webview窗口: Webvi ...
- java学习笔记 --- 面向对象2
一.匿名对象 (1)没有名字的对象 (2)应用场景 A:调用方法,仅仅只调用一次的时候. class Car { //描述属性.颜色,轮胎数. String color; int number; ...
- Angular4.0.0正式版发布
来源于angular4.0.0发布时的公告,译者:niithub 原文发布时间:Thursday, March 23, 2017 翻译时间:2017年3月24日 angular4.0.0正式版现在可以 ...