在这里先介绍下ActiveReports。ActiveReports
是
.net
下出色的报表开发工具,我最喜欢它的地方就是提供了单独的代码文件,你能够操作数据源,也可以控制报表的显示等等,很灵活。但是可能由于宣传不足,国内用的比较少,这两天用上了最新的
ActiveReports for .net 3.0
,发现比起
2.0
,变化是比较大的,要从
2.0
迁移到
3.0
,还要费一点功夫。下面说说升级后的主要区别和要注意的几个地方,其中包含了一些朋友在本系列前面的随笔的评论中提到的问题。
安装:
我的安装过程可谓是一波三折。先卸载掉了
2.0
,安装
3.0
后发现
VS2005
每次启动后都提示“包加载错误”,要求使用“
devenv /resetskippkgs
”重新加载的提示。所有的窗体都无法打开设计器,而且给项目添加新项的时候也没有显示
ActiveReports
的文件。根据提示在网上搜了一遍,按照微软提供的资料也无法解决,无奈之下只好修复
VS2005
,完成后窗体设计器可以打开了,这才松了口气,重新安装
ActiveReports
,这次没有出现什么问题,一次
OK
。
安装完了,第一件事就是打开帮助看看有什么新的变化,但是很不幸,帮助无法打开,只好又执行了一次帮助安装目录下的
H2Reg.exe /r
,才把帮助搞定。
这下整个安装过程才完成,可以正式开始了。
可视化设计器:
设计器中最明显的变化就是添加了“
Preview
”的
Tab
页,可以设计好布局后直接在这里预览。
3.0
版本还在工具栏里提供了在设计期放大,缩小浏览布局的按钮,刚安装后并不显示,需要在工具栏配置中选中。这是个很方便的功能,因为在作一些表格式的报表时,经常在设计期看到线都是对齐的,但是在打印出来后常常有中断或者偏差,有了这个功能,在设计期就能方便地检查这些错误。
还有就是在
2.0
中,打开报表设计器的时候会显示
ReportExplore
,现在
ReportExplore
设计成和类解决方案,属性等窗口一样的模式,可以和这些窗口重叠在一起显示。
ReportExplore
中的
Fileds
节点增加了下级:
Bound
和
Caculated
。
代码迁移:
在
3.0
版本中,程序集名称,命名空间都已经变了,以前用
2.0
写的报表都编译不了,如果仍然要使用
rpx
+
cs
文件的方式,就要自己修改代码,重新添加项目引用。
3.0
中也提供了工具,用来转换
2.0
下的报表。该工具是“工具”菜单下的
ActiveRepots File Convert
,根据向导转换完成后,你会发现,原先的报表的图表变成了和组件一样的图标,原来的
Rpx
文件已经不存在了,一个报表的文件组成变成了
.cs + resx
,同样你如果新建一个报表,也是
cs+resx
这样的文件组合。这应当是
3.0
中最大的变化了,所以如果你安装了
3.0
后,看到原来的
rpx
文件的图标是未知文件类型的,请不要奇怪。
3.0
中还提供了从
Access
导入报表的功能,你可以在给项目添加新项的时候看到“
ActiveReports 3.0 Access Import Wizard
”的项,提供了一个向导来从指定的
Access
库中导入报表。
问题
ActiveReport
提供了一个很重要的功能-
End User
,并且有一个示例程序,实现了一个报表设计器。在这个示例程序中,如果使用了中文字段名,并且显示在
Report Explore
的
Fileds
节点中,从
Report Explore
向报表上拖放的时候会产生一个错误,提示控件名不合法。
这是因为在拖放的时候会自动生成一个和字段名相像的
TextBox
框,名字为“
txt+
字段名”,所以会报出错误。但是在
2.0
中却没有这个错误,当出现中文字段名时,生成对应的
TextBox
会自动更名,使用合法的名字。所以这应当是
3.0
中的一个
bug
。
要重现这个
bug
,只需要在
EndUser
示例的窗口的
Load
事件中添加下面的代码:
DataTable
dt = new DataTable();
dt.Columns.Add("
中国
"
);
dt.Columns.Add("123123");
dt.Columns.Add("asdf");
dt.TableName = "table1";
DataSet
ds = new DataSet();
ds.Tables.Add(dt);
this
.arDesigner.Report.DataSource = ds;
this
.arDesigner.Report.DataMember = ds.Tables[0].TableName;
程序启动后会在
Report Explore
中看到添加的字段,直接拖放到报表上就能看到错误了。
虽然有这个问题,但是并不妨碍使用中文字段,只要不使用拖放功能就可以了。
粗略的看了下,捡自己觉得重要的写了。完整的更新列表还请看帮助里的“
What’s New
”。最新版的
ActiveReports for .net 3.0
可以在
DataDynamic
的官方网站上下载,已经是带
SP1
的了。