The Last Day Of Summer

.NET技术 C# ASP.net ActiveReport SICP 代码生成 报表应用 RDLC
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用ActiveReports for .net 进行报表开发(十一)--迁移到3.0

Posted on 2007-01-22 12:42  Cure  阅读(10443)  评论(22编辑  收藏  举报

在这里先介绍下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节点增加了下级:BoundCaculated

 

代码迁移:

3.0版本中,程序集名称,命名空间都已经变了,以前用2.0写的报表都编译不了,如果仍然要使用rpxcs文件的方式,就要自己修改代码,重新添加项目引用。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 ExploreFileds节点中,从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的了。