原因: 挂接报表事件的代码被多次执行,因此同一事件函数被多次挂接上;在事件一次触发过程中,这个事件函数会被多次调用。如 FetchRecord 事件就会多次填入报表数据,从而造成报表数据重复。

解决方式1:移动挂接报表事件的代码的位置,让这些代码只执行一次。一般是在 From 的启动函数或事件中。如下C#与VB.NET代码:
public Form1()
{
...
//连接报表事件
Report.Initialize += new _IGRReportEvents_InitializeEventHandler(ReportInitialize);
Report.FetchRecord = new _IGRReportEvents_FetchRecordEventHandler(ReportFetchRecord);
Report.GroupBegin += new _IGRReportEvents_GroupBeginEventHandler(ReportGroupBegin);
Report.ProcessRecord += new _IGRReportEvents_ProcessRecordEventHandler(ReportProcessRecord);
Report.SectionFormat += new _IGRReportEvents_SectionFormatEventHandler(ReportSectionFormat);
...
原因: 挂接报表事件的代码被多次执行,因此同一事件函数被多次挂接上;在事件一次触发过程中,这个事件函数会被多次调用。如 FetchRecord 事件就会多次填入报表数据,从而造成报表数据重复。

解决方式1:移动挂接报表事件的代码的位置,让这些代码只执行一次。一般是在 From 的启动函数或事件中。如下C#与VB.NET代码:
public Form1()
{
...
//连接报表事件
Report.Initialize += new _IGRReportEvents_InitializeEventHandler(ReportInitialize);
Report.FetchRecord = new _IGRReportEvents_FetchRecordEventHandler(ReportFetchRecord);
Report.GroupBegin += new _IGRReportEvents_GroupBeginEventHandler(ReportGroupBegin);
Report.ProcessRecord += new _IGRReportEvents_ProcessRecordEventHandler(ReportProcessRecord);
Report.SectionFormat += new _IGRReportEvents_SectionFormatEventHandler(ReportSectionFormat);
...
...
'连接报表事件
AddHandler Report.Initialize, AddressOf ReportInitialize
AddHandler Report.FetchRecord, AddressOf ReportFetchRecord
AddHandler Report.ProcessRecord, AddressOf ReportProcessRecord
AddHandler Report.GroupBegin, AddressOf ReportGroupBegin
AddHandler Report.SectionFormat, AddressOf ReportSectionFormat
...
End Sub

解决方式2:在挂接事件前,先移除原来的挂接事件。如下C#与VB.NET代码:
Report.FetchRecord -= new _IGRReportEvents_FetchRecordEventHandler(ReportFetchRecord);
Report.FetchRecord += new _IGRReportEvents_FetchRecordEventHandler(ReportFetchRecord);

RemoveHandler Report.FetchRecord, AddressOf ReportFetchRecord
AddHandler Report.FetchRecord, AddressOf ReportFetchRecord
把项目下的 bin 与 debug 目录也删掉
参考例子 Advance\CustomGroup,只要注意报表事件 FetchRecord 中的相关代码。
参考例子 CSharp\Advance\PrintDataGridView
参看例子 Advance\CustomGroup,只要看报表事件 FetchRecord 部分
一般与 ADO 有关,如果是 release 版本错误,与编译选项中的"启用字符池"这项可能有关系。
GRFetchRecordFromDataSet(Report :TGRReport; DataSet :TDataSet; DisplayText :Boolean)
定义在 GRUtility 中。
因 Delphi 与 C++Builder 有太多的版本,没法逐个版本测试,根据用户反馈的信息,各个版本应该都是可以用的。
在安装开发者安装包之后,请参考“C:\GridReport7\Samples\QT”目录下的说明。

FAQ中没有解决问题,请查看其它技术支持方式。这里常见问题解答(FAQ)内容也全部包含在GridReport的帮助文档中,开发者一定要善于查看软件安装后的产品帮助文档。