FAST REPORT 报表分组取消错误

在使用.NET调用FAST REPORT并从SQL SERVER获取数据时,遇到预览报表时的'未能比较数组中的两个元素'错误。问题源于报表设计中的分组字段被意外删除,而非数据源问题。通过检查并恢复分组字段设置,成功解决了报错。

笔者新近在开发一个由.NET 调用 FAST REPORT的程序时,预览报表时报出 “未能比较数组中的两个元素”,一直以为是数据源的问题,数据源是 由.NET的程序从SQL SERVER 读取数据表生成一个 DataTable ,再在FAST REPORT以在之前设计好的报表格式显示出来,其中用了一个唯一的GUID 字段进行分组。错误的界面如下:

 

文字如下:

 System.InvalidOperationException: 未能比较数组中的两个元素。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 FastReport.Code.AssemblyDescriptor.CalcExpression(String expr, Variant value)
   在 FastReport.Report.CalcExpression(String expression, Variant value)
   在 FastReport.Report.Calc(String expression, Variant value)
   在 FastReport.Report.Calc(String expression)
   在 FastReport.Data.DataSourceBase.RowComparer.Compare(Object x, Object y)
   在 System.Array.SorterObjectArray.SwapIfGreaterWithItems(Int32 a, Int32 b)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Array.SorterObjectArray.SwapIfGreaterWithItems(Int32 a, Int32 b)
   在 System.Array.SorterObjectArray.QuickSort(Int32 left, Int32 right)
   在 System.Array.Sort(Array keys, Array items, Int32 index, Int32 length, IComparer comparer)
   在 System.Collections.ArrayList.Sort(Int32 index, Int32 count, IComparer comparer)
   在 FastReport.Data.DataSourceBase.Init(Relation relation, String filter, SortCollection sort, Boolean useAllParentRows)
   在 FastReport.Data.DataSourceBase.Init(DataSourceBase parentData, String filter, SortCollection sort, Boolean useAllParentRows)
   在 FastReport.DataBand.InitDataSource()
   在 FastReport.GroupHeaderBand.InitDataSource()
   在 FastReport.Engine.ReportEngine.RunGroup(GroupHeaderBand groupBand)
   在 FastReport.Engine.ReportEngine.RunBands(BandCollection bands)
   在 FastReport.Engine.ReportEngine.RunReportPage(ReportPage page)
   在 FastReport.Engine.ReportEngine.RunReportPages()
   在 FastReport.Engine.ReportEngine.RunReportPages(ReportPage page)
   在 FastReport.Engine.ReportEngine.Run(Boolean runDialogs, Boolean append, ReportPage page)
   在 FastReport.Engine.ReportEngine.Run(Boolean runDialogs, Boolean append)
   在 FastReport.Report.Prepare(Boolean append)
   在 FastReport.Report.Prepare()
   在 FastReport.Design.ReportTab.Preview()

内部返回的错误我们没有办法跟踪和调试,后来换了 多个数据源 都是这样的错误,再经过重新建报表还是同样的问题。最后我转变思路应该是本身报表的结构问题,最后在报表的分组里面不小心把分组的字段删除掉了,截图如下:

 

 

这个指南让你熟悉报表设计器和了解报表设计的基本概念(各种区域,数据源,二次表,等等)。指南将帮助你开始用FastReport创建报表,但它不能告诉你怎样使用其它基本的报表设计器。 如果你不熟悉报表设计器,我们建议你参考QuickReport的帮助系统。QuickReport的指南已经包含在你的Delphi拷贝中。QuickReport的大部分基本概念也适用于FastReport,然而,FastReport能提供更多的弹性和最终用户的自定义。 关于FastReport的说明 FastReport是高弹性的报表设计器,用于报表的数据可以从任何类型的数据源获取,包含字符列表,BDE数据库,ADO数据源(不使用BDE),Interbase(使用IBO),Pascal数组和记录,以及一些不常用的数据源。 整个FastReport系统是用Delphi的Pascal编写的。FastReport不需要动态链接库,但需在你的项目中占用大约400kb(Delphi 5)。如果你想最终用户拥有设计能力,这将在你的.EXE中增加大约500kb。虽然这看上去比较大,但这只是其它设计的几分之一。你同样应该考虑到FastReport不仅仅只是包含最终用户更改报表设计的能力,还能够适应查询和数据库的变化。FastReport还包含自己的脚本语言,让应用程序和最终用户能够更容易地改变报表。如果你的大部分应用使用FastReport,你可以简单地配置FastReport BPL(大约1400kb)而所有你的应用程序只需要保留很少的一部分。 你可以发现FastReport有一个非常吸引人的用户界面,使用最新的用户界面组件,例如可停靠的工具栏。你的最终用户将会非常愿意使用这个设计器,只需使用鼠标就可以创建大多数报表FastReport是名副其实的快速报表:较其它一些Delphi报表设计器而言,你可以发现没有什么可以接近于它的开发速度。报表预览窗口一直是大多数报表设计器的弱点,高品质的外观,赋于你的应用程序非常专业的用户界面。 FastReport是一个已经拥有三年历史的非常成熟的报表设计器,成长使它拥有其它Delphi报表设计器所不能相比的诸多先进特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值