使用ActiveReport for net 进行报表开发

上传人:zou****hua 文档编号:199371105 上传时间:2023-04-10 格式:DOCX 页数:15 大小:37.84KB
返回 下载 相关 举报
使用ActiveReport for net 进行报表开发_第1页
第1页 / 共15页
使用ActiveReport for net 进行报表开发_第2页
第2页 / 共15页
使用ActiveReport for net 进行报表开发_第3页
第3页 / 共15页
点击查看更多>>
资源描述
使 用 ActiveReport for .net 进行报表开发(一)开始ActiveReport是.net下的一个出色的报表开发程 序,虽然和水晶报表相比,名气不那么大, 甚至有很多人不知道它的存在,但是并不妨碍它在.net报表开发中的出色表现,本文将一步一 步地介绍如何使用它和VS2005开发.net报表。1. 安装:你可以从Data Dynamics的网站上下载最新的ActiveReport for .net 2,你可以免费使用, 但是在 生成的报表最下边有水印,不过不影响报表的整体美观。下载后直接安装就可以了。 安装完后会看到开始程序菜单里的 DataDynamics 的目录,里面包括了,帮 助,例子程 序等。2. 第一个 Winform 报表程序。在安装完成后,启动VS2005,会看到启动界面上有ActiveReport的图标,进入后新建一 个工 程,并且给工程添加新文件,在文件类型中就可以看到ActiveReport文件的图标。 给报表文件命名 为ActiveReport1,确定后会看到项目中有一个ActiveReportl.rpx文件, 这个就是报表文件 了。打开文件,就是报表的设计界面,在这里可以看到三部分,PageHeader (表头),Detail (明细),PageFooter (表尾)。打开工具箱,给Detail部分随便添加一个Label。下面就要显示这个报表了,在 Form 上添加一个 Viewer 控件,如果工具箱里没有, 可以 通过配置工具箱来找到它。Viewer添加完后,在Form中写代码:ActiveReports1 rpt = new ActiveReports1(); rpt.Run();this.viewer1.Document = rpt.Document;然后F5运行,就可以看到在Viewer控件中显示报表了。要注意的是,项目名称不要命 名为ActiveReport,否则会提示找不到ActiveReport.rpx 文件。3. 第一个 web 报表程序。Web方式的报表开发方式和winform的差不多,不同的是,web方式下需要作一些配置,配 置过程不再累述,可以在帮助里搜索“Manually Configuring Web Samples ,按照里面 的步骤对 IIS 作配置。要注意的是,如果使用的是VS2005,那么可以不作配置,只要在创建Web项目的时候文件 位置选项设置为“文件系统”就可以直接运行了。还要注意的是,在web方式下,需要在 web.config 文件中添加下面这段: 如果是VS2005,系统会自动添加。接下来的就和winform下的差不多了,不同的是,要在解决方案中新增一个“类库”项目, 在这个项目中新建报表文件,然后在Web项目中添加对类库项目的引用,然后在页面上添 加 WebViewer 控件,然后编写代码:this.WebViewer1.Report = new YourNamespace.ActiveReports1(); 然后运行界面,就可以看到在 WebViewer 中加载的报表了。你可以通过 WebViewer 的 ViewType 属性来设置在页面上如何显 示,例如,如果选择了 AcrobatReader,就会给报表生成一个PDF文档在页面上嵌入显示。下次我们将演示如何在报表 上加载和显示数据使 用 ActiveReport for .net 进行报表开发(二)-绑定数据源在上篇随笔中写了一个使用ActiveReport for .net的最简单的例子,本文将演示在 ActiveReport 中如何绑定数据源1. 先建一个表chartingTable,有两个字段,OnlineUserCount, Project,通过向导生成 DataSet,并拖放生成 TableAdapter。2. 接下来在报表设计器中设计 显示格式,在PageHeader中放置两个label,分别为“项目” 和“在线人数。再在Detail区方式两个对应的Label,分别设置DataFiled为Project 和OnlineUserCount,在运行的时候将会看到这 两个Label显示的是对应字段中的内容。3. 可以给报表指定DataSet或DataView作为数据源,下面演示给报表设置数据源: 使用 DataSet:this.chartingTableTableAdapter.Fill(this.dataSet1.ChartingTable); rpt.DataSource = this.dataSet1;rpt.DataMember = this.dataSet1.ChartingTable.TableName;rpt.Run();this.viewer1.Document = rpt.Document;使用 DataView: this.chartingTableTableAdapter.Fill(this.dataSet1.ChartingTable);DataView dv = this.dataSet1.ChartingTable.DefaultView; ; rpt.DataSource = dv;dv.RowFilter = project =1;rpt.Run();this.viewer1.Document = rpt.Document;4. 我们还可以通过报表设计器来给报表指定数据源。在报表设计器的Detail部分的头部,有一个数据库一样的小图标,点击它后会出现向导, 按照向导一步步连接数据库,并定义查询就可以了。上面演示的是使用数据集作为 数据源进行绑定,但是实际项目中经常会用到使用对象集合作为 数据源显示,下一次我们将演示如何在报表上显示一个对象集合中的数据。使 用 ActiveReport for .net 进行报表开发(三)显示对象集合中的数据上篇随笔演示了在 Activ eRepor t for .net 中如何绑定数据源,例女廿Dat aSe t, Dat aView。本文 将通过一些示例代码继续演示如何绑定对象集合以及如何从对象集合或列表中提取数据。1. 直接绑定:我们可以自己定义一个Collection,从IList继承,并使其中的每个对象 都是一个实体, 例如:Customer 和 CustomerCollection。然后给 ActiveReport 报表的 DataSource 直接赋值为 CustomerCollection 的实例就可以了。这种绑定 方法在 ActiveR 自带的例 子里有完整的演示。2. 手工加载显示对象的数据:在这里要用到两个事件:DataInitialize和FetchData。DataInitialize用来定义字段列表,获取数据等工作,FetchData用来指定每个字段的值。 我们简单定义一个 Customer 类public class Customerpublicint ID;publicstring Name; publicstring Address;再给报表定义一个 Customer 数组,用来保存要显示的数据,比如: public Customer customers;还需要一个值来保存当前记录的索引: private int index =0; 接下来在 DataInitialize 中定义报表有那些字段:this.Fields.Add(Name); this.Fields.Add(Address);然后在 FetchData 事件中添加以下代码:if (this.index = this.customers.Length )eArgs.EOF = true;return;elseeArgs.EOF = false;this.FieldsName.Value = customersthis.index.Name;this. FieldsAddress. Value = customersthis.index.Address; this.index += 1;这段代码的含义就是将 Customer 数组中的每个 Customer 实例的 Name 和 Address 属性值赋 给报表的 Name 和 Address 字段。代码中的第一个if分支是判断是否已经加载到了最后一条数据,如果是,设置eArgs.EOF 为ture,并返回,否则继续加载下一条数据。然后我们可以将要显示的数据放在Customers数组中,并启动显示报表:Customer customers = new Customer2;Customer c = new Customer();c.Name = James;c.Address = Noljadfallsjf;Customer c2 = new Customer();c2.Name = Joe;c2.Address = adfaafadf;customers0 = c;customers1 = c2;rpt.customers = customers;rpt.Run();this.viewer1.Document = rpt.Document;通过上面的示例可以看到,第二种方式虽然比较烦琐,需要程序员自己处理很多东西,但 是这样程序员拥有完全的操控能力,特别是需 要对取出的数据作很多复杂的处理时,这样 的操控能力是非常重要的。在下一篇随笔中,将展示如何使用子报表来作显示主从表。使 用 ActiveReport for .net 进行报表开发(四)显示主从表上篇随笔演示了在Act iveReport for .net中如何从对象集合中提取数据。本文简单介绍如何 使用子报表来显示主从表中的数据。1. 在需要显示主从表中的数据 时,使用子报表能够提供很大的灵活性,一般就是把主表的信 息显示在detail中,如果要每页的上方都要显示主表,就可以放在PageHeader中。再把 子表的信息放在Detail中,然后把子报表中的控件直接绑定到数据源上或者使用上篇随 笔中的提到的方式从对象集合中提取数据。2. 使用子报表:新建报表,然后在工具箱上可以看到 SubReport 控件,拖放一个控件到 Detail 部分,用此 控件来加载子报 表。再新建一个报表,命名为 SubReport1 ,接下来在主报表中写代码, 在页面设计器上选中 Detail部分,在属性窗口切换到事件栏,双击Format,将会产生Detail_Format事件,下 面就要在这个事件 里指定子报表控件所要加载的报表。3. 由于Detail部分会进行重复显示的,所以,只能指定一次报表源,在这里,我们按照下 面的例子:ActiveReport sub =null;privatevoid Detail_Format(object sender, System. EventArgs eArgs)if ( sub = null )sub = new ActiveReports2(); this.SubReport.Report = sub; 先定义一个全局的子报表,然后在 Detail_Format 事件中对其进行初始化。4. 还有要注意的一点是,在使用 完子报表后要将其释放,销毁掉,具体的代码放在主报表的 ReportEnd 事件中,例如:private void ActiveReports1_ReportEnd(object sender, System.EventArgs eArgs) sub.Document.Dispose(); sub.Dispose(); sub = null;5. 下面剩下的工作就是摆放控件并设置显示的字段了,加载数据等等了,前面的随笔都有介绍。下篇随笔中将介绍如何使用 ActiveReport for .net 开发交叉报表。进行报表开发(五)使 用 ActiveReports for .net 交叉报表交叉报表是一种常见的报表类型,而且开发起来也是比较烦琐的一种报表,在 ActiveReport 中,对交叉报表提供了足够 的灵活性,使你能够应对各种复杂的业务逻辑。在上篇随笔演示了 显示主从表后,本篇随笔简单介绍如何制作交叉报表。交叉报表的一个常见应用就是用作显示销售额的报表上,例如,显示多个连锁店一年 内每 个月的销售额,常把月份作为列来显示,每个店用一行来表示:店名1月2 月3 月4 月AC5002001000050000BC511852454545124578但是在数据库中的存储常常采用下面的方式SalesMonthShop123121AB2434232AB3232323AB12313121BC12322BC这样就需要在显示前对数据进行处理,把销售额和月份转换到列上,我们可以在取数 据时 使用 sql 来进行这些操作,在这里,为了演示在 activeReport 中的使用,把转换放到报表里 来 作,为了简化例子,我们只显示第一个季度每月的销售额。1. 取数据:使用 Select Sales,Month,Shop from CrossReport Order by Shop 这样的 sql 直接取数据, 不作任何合计或转换处理。2. 转换: 我们来定义一个简单的对象来表示最终要显示的记录:public class Salepublic decimal money1; /一月public decimal money2; /二月public decimal money3; /三月 public string shopname;同时在定义一个Sale的集合sales,来保存转换后的数据。由于在表中每个店会对应多条记录,为了把多条记录合并为一条,要进行下面的转换动作 /用来保存已经计算过的店铺,保证每个店铺只有一条记录ArrayList shopname = new ArrayList();while (dr.Read()if (!shopname.Contains(dr.GetString(2) /该店铺的第一条记录Sale s = new Sale ();s.shopname = dr.GetString(2); /取店名 shopname.Add(s.shopname); if (dr.GetInt32(1) = 1) /一 月s.money1 = dr.GetDecimal(0);else if (dr.GetInt32(1) = 2) /二月s.money2 = dr.GetDecimal(0);else if (dr.GetInt32(1) = 3) /三月s.money3 = dr.GetDecimal(0);sales.Add(s);else /不 是该店铺的第一条记录Sale s = (Sale)sale sales.Count - 1;if (dr.GetInt32(1) = 1)s.money1 = dr.GetDecimal(0);else if (dr.GetInt32(1) = 2)s.money2 = dr.GetDecimal(0);elseif (dr.GetInt32(1) = 3)s.money3 = dr.GetDecimal(0)3.表示:上面是对从数据库中取出的记录作转换,将其变成在报表上要显示的格式。接下来就要在报表上显示Sales集合中的数据了。我们可以按照前几篇随笔中介绍的方法来作: 在界面上摆放控件,并设置其FiledName字段在报表的Datalnitialize事件中设置Filed集合,取出数据:this.Fields.Add(money1);this.Fields.Add(money2);this.Fields.Add(money3);this.Fields.Add(shopname);this.GetReportData(); /取数据并作转换设置一个标记来表示是否显示到了最后一条记录:int index = 0;在FetchData事件中显示Sales集合中的数据:if (index = sales.Count ) /如 果到了最后一条记录,就跳出eArgs.EOF = true;return;elseeArgs.EOF = false;Sale s = (Sale)salesindex;this.Fieldsshopname.Value = s.shopname;this.Fieldsmoney1.Value = s.money1;this.Fieldsmoney2.Value = s.money2;this.Fieldsmoney3.Value = s.money3;index+=1;按照上面的步骤,主要的代码都完成了,当然要在窗体上显示,还要加一个Viewer,然后 指定加载的报表:ActiveReports1 rpt = new ActiveReports1();rpt.Run();this.viewer1.Document = rpt.Document;如果你不满意显示的效果,可以给报表加上线框,让其显示成表格总结:例子中的代码有重复,但是为了说明转换的过程,没有作优化,另外,也可以看到, 代码 中使用了 ArrayList,出现了装箱,拆箱的动作,所以性能还有优化的空间。从表数据到显示用数据的转换可以在Sql中作,但是业务逻辑较复杂的时候,Sql就显得 力不从心,例如,显示 每月的数据,而且还有收入,支出,如果再加上税收,折扣,损耗,租 金,和上年同期的比较等等无法预测的业务逻辑,如果把SQL写在代码中,调试成问题,如果 写成存储过程,有破坏了封装。所以相比之下,在代码中进行的转换工作虽然较复杂,但是还是 具有灵活的优势的。使 用 ActiveReports for .net 进行报表开发(六)-导出报表ActiveReport提供了多种文件格式的导 出,包括:Html,Pdf,Text,Rtf,Xls,Tiff,这几种 格式中,Pdf是效果最好,因为有了抗锯 齿,线条和字体看起来都光滑的多,而且是完全的所 见即所得,加上很多Web项目都采用Pdf作为报表显示的文件格式,导出Pdf应该是首选。由 于是把报表直接生成了图片,Tiff格式的导出也是所见即所得 的。其他的文件格式的限制都比 较多,每种文件格式的限制可以在 ActiveReport 的帮助中搜索 “Limi tat ions in Expor t Forma ts ,其中有详细的列表。将报表导出的步骤也很简 单,先要在工具栏上添加导出要用的控件,这组控件有: HtmlExport,PdfExport,RtfExport,TextExport,TiffExport,XlsExport 六种。这里以 PdfExport 为例:拖放一个PdfExport控件到窗体上,就可以进行导出操作了,代码很简单,我们假设有一 个报表文件和一个 Viewer:窗体加载的时候:ActiveReports1 rpt = new ActiveReports1();rpt.Run();this.viewer1.Document = rpt.Document;在一个 Button 的 Click 中: this.pdfExport1.Export(this.viewer1.Document,z:123.pdf);很简单吧,其他格式的导出也 一样,例如 Excel 格式:this.xlsExport1.Export(this.viewer1.Document, z:123.xls);在生成 Pdf 的时候要注意,有时页面设 置不当,控件的大小可能会超出范围,导致报表有 一部分无法打印出来,在使用 AcrobatReader 预览的时候,要在 Print 窗口,通过调整 Page Scaling为None,看看右边Preview部分,有没有发生超出打印范围的情况。另外在作表格的 时候要放大后看,因为经常会出现线条没有对齐或完全连接的情况,在预览的时候看不出来,但 是在打印后会看到线条错位等情况。进行报表开发(七)使 用 ActiveReports for .net-事件上篇随笔介绍了在ActievReport中导出报表,本篇随笔简单介绍ActiveReport中的重要事件。1. 只触发一次的事件:ReportStart:在报表启动时触发。该事件在Datalnitialize之前,在这里可以整个报表 都要用到的对象或变量作初始化,也可以设置子报表。DataInitialize :这个事件在前面的几篇随 笔中经常出现,经常在这里取数据,绑定数 据源,设置报表的 Fileds 属性等。ReportEnd :在报表加载完成后触发。2. 多次触发的事件:FetchData : 在处理每一条数据时都会触 发,如果是采用绑定数据源的方式,就不需要 再作对Fields中每个Field的Value赋值。如果是从自定义的对 象集合中提取数据,就 要在这里给 Fields 赋值。而且,使用自定义集合的时候要自己设置事件的 eArgs 参数的 EOF 属性,该属性用来判断是否显示到了最后一条记录,如果是,就设置为true,并且直接返 回。具体的代码可以参看以前的随笔。PageStart :在报表的每页生成的时候触 发,在这里作针对每个页的处理,最常见的就是 显示页码。PageEnd :在报表的每也生成完成的时 候触发。3. 区域的事件:每个区域(PageHeader, Detail , PageFooter)都有 Format, BeforePrint 和 AfterPrint 事件。最好不要在这几个事 件中操作报表的 Fields 集合,而应该在 DataInitialize 和 FetchData 中进行。Format :在数据加载并绑定后触发,只有在这里才可以设置某个区域的高度。BeforePrint:在区域被生成前触发,在这里如果设置区域的高度是不会有效果的,而且不 要在这里操作数据源。AfterPrint:在区域已经被生成并描画出后发生,可以在该事件里直接在画布上进行描画操作。使用 ActiveReports for .net 进行报表开发(八)-显示合计在报表开发中我们常常要显示合计,比如销售记录,要显示单价,售出件数, 合计金额等。我们可以在从数据库中提取数据的时候就使用 SQL 来产生一个合计字段,也 可以在 ActiveReport 中进行,有两种方法可以使用。1. 使用 Act iveReport 中的 Label 或 Text Box 控件的Dat aField 属性。例如,要使一个TextBox显示合计,它的值是由单价和售出件数的乘积。设置 TextBox的DataField值为“=单价*售出件数”。然后编写代码,加载数据,设 置Field集合,然后在FetchData事件中给Field赋值,就可以完成了,例如:this.FieldsProductName.Value = row.productName;this.FieldsUnitPrice.Value = row.unitPrice;this.FieldsQuantity.Value = row.quantity;2. 不对 DataField 属性使用表达式,而是直接在 FetchData 中进行计算,例如:double quantity = Convert.ToDouble(this.FieldsQuantity.Value);double unitPrice = Convert.ToDouble(this.FieldsUnitPrice.Value);this.FieldsExtendedPrice.Value = quantity * unitPrice;当然要在报表上显示要设置 Label 或 TextBox 的 DataField 属性为 ExtendedPrice使用 ActiveReports for .net 进行报表开发(九)-End User我们在使用ActiveRepots的时候,通常都是在工程里建一个.rpx文件,然 后自动 会有一个对应的代码文件,我们就把代码和处理逻辑写在代码文件里。 但是,能不能脱离代码文件,只使用.rpx文件来生成报表呢?答案是可以 的, ActiveReports提供的EndUser功能可以做到这一点。ActiveRepots自带的示例代码中包括了两个EndUser功能的例 子: DiamondReports和EndUserDesigner,前者的功能齐备些,后者比较简单,但是 对于学习使用EndUser功能,比较直观,下面说说在winform和web环境下如 何使用。运行EndUserDesigner示例程序,会看到一个在VS.net中的报表设计界面 非常相似 的界面。有工具栏,有字段列表,有报表布局,有属性,等。实际上 最主要的两个控件是ardMain和ardReportExplorer, ardMain就是用来显示报 表布局的,ardReportExplorer用来显示当前ardMain的数据源的 字段列表和 布局的各个部分。使用EndUser主要有两个步骤:设定数据源,设计报表布局。设定数据源可 以通过点击布局部分 Detail 字样前的图标,会弹出一个对话框,在这里可以设 置数据源类型,连接串, sql 语句。完成后会在字段列表部分显示出通过 sql 语 句得到的字段, 然后就可以设计报表布局了。你可以把字段列表中的某一项拖 放到布局上,会自动生成控件并绑定 DataField。在 Winform 下,设 计完成后就可以通过 EndUserDesigner 菜单上的“预览” 看到你的报表了。然后可以用Save Layout菜单将报表保存为一个.rpx文件。 要在web环境下使用刚才设计的报表,步骤要复杂些:1. 按照上面的步骤设计.rpx文件。2. 在web项目中包括.rpx文件。3. 配置web.config文件,为了能在浏览器中直接显示报表,需要对 Web.config 文件作一些设置,在 system.web 标记里添加以下内容:这里的 Version 和 PublicKeyToken 都必须正确,如果你不清 楚,可以通过 管理工具里的.net framework配置工具来查看这些属性。在ActiveReports的文档里说在VS2005中如果不是使用IIS就可以不用配 置,在VS2003里是必须的。但是我在VS2005中,如果不加 这段配置还是不行。4. 在页面上使用,例如:Sample注意这里传入的参数OutputFormat二pdf,这样会使在浏览器里打开报表生 成的 pdf 文 件。目前ActiveReports只支持pdf和html两种格式,如果你使用excel或者 rtf,是没有效果的,都会按照html格式显示。上面说了基本的操作,但是如果在sql语句里有参数怎么作呢?怎样向sql 语句传递值来取得指定 的数据呢?首先要在 sql 语句里嵌入参数的表达形式,例如:Select * from Customers WHERE Country = 是不是有些像CodeSmith的代码生成脚本?下面要作的就是传参数值了,在web下比较简单,使用QueryString,例如, 我们把 Url 写成这样:YourRepor t.rpx?Ou tpu tF orma t二pdf & Coun try二China, 切就OK 了。在 Winform 下,不用自己传参数 值,只要你在运行报表的时候, ActiveReports 会自己解析 Sql 语句,分析出有哪些参数,然后会弹出一个对话 框,列出参数,要求你输入值。可以看出,使用EndUser功能是很简单的,但是它一样也有局限,就是适 合较简单的业务,虽然设计一个报表很简单,甚至可以把一部分工作交给客户自 己完成,但是不要指 望客户能作多么复杂的东西,客户宁可打个电话要求开发 者帮忙义务劳动下,维护的工作量最终还是在程序员身上。使用 ActiveReports for .net 进行报表开发(十)-交叉变换背景在报表中使每条记录按照不同的背景色显示能够增加报表的美观,数据的显 示更清晰,这样的效果 在报表开发中是很常见的,在 ActiveReports 中要实现 起来也很简单的。可 以像帮助里的例子一样:bool changeColor = false;private void Detail_Format(object sender, System.EventArgs eArgs)if (changeColor)changeColor = false;this.Detail.BackColor = System.Drawing.Color.DarkOrange;elsethis.Detail.BackColor = System.Drawing.Color.Transparent;changeColor = true;也可以在每条记录的下面放一个Shape,设置其不显示边框,将其置于最 后面,然后按照上面的代码方式设置这个Shape的颜色。使用ActiveReports for .net进行报表开发(十一)-迁移到 3.0在这里先介绍下Acti veRepor ts。Ac tiveRepor ts是.net下出色的 报表开 发工具,我最喜欢它的地方就是提供了单独的代码文件,你能够操作数据源,也 可以控制报表的显示等等,很灵活。但是可能由于宣传不足,国内用的比较 少, 这两天用上了最新的Act iveRepor ts for .net 3.0,发现比起2.0,变化是比较 大的,要从2.0迁移到3.0,还要费一点功夫。下面说说升级后的主要区别和要 注意的几个地方,其中包含了一些朋友在 本系列前面的随笔的评论中提到的问 题。安装:我的安装过程可谓是一波三折。先卸载掉了 2.0,安装3.0后发现VS2005 每次启动后都提示“包加载错误”,要求使用“ devenv /rese tskippkgs ”重新 加载的提示。所有的窗体都无法打开设计器,而且给项目添加新项的时候也没有 显示ActiveReports的文件。根据提示在网上搜了一遍,按照微软提供的资料 也无法解决,无奈之下只好修复VS2005,完成后窗体设计器可以打开了,这才 松了口气,重新安装ActiveReports,这次没有出现什么问题,一次0K。安装完了,第一件 事就是打开帮助看看有什么新的变化,但是很不幸,帮 助无法打开,只好又执行了一次帮助安装目录下的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导入报表的功能,你可以在给项目添加新项的时 候看到“ Ac ti veRepor ts 3.0 Access Impor t 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.Tables0.TableName;程序启动后会在Report Explore中看到添加的字段,直接拖放到报表上就能看到错误了。虽然有这个问题,但是并不妨碍使用中文字段,只要不使用拖放功能就可 以了。粗略的看了下,捡自己觉得重要的写了。完整的更新列表还请看帮助里的“Wha ts New。最新版的 Acti veRepor ts for .net 3.0 可以在 Dat aDynamic 的官方网站上下载,已经是带SP1的了。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!