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

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

解决方式1:移动挂接报表事件的代码的位置,让这些代码只执行一次。一般是在 From 的启动函数或事件中。如下C#与VB.NET代码:
public Form1()
{
  ...
  //连接报表事件
  Report.Initialize += new _IGridppReportEvents_InitializeEventHandler(ReportInitialize);
  Report.FetchRecord = new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecord);
  Report.GroupBegin += new _IGridppReportEvents_GroupBeginEventHandler(ReportGroupBegin);
  Report.ProcessRecord += new _IGridppReportEvents_ProcessRecordEventHandler(ReportProcessRecord);
  Report.SectionFormat += new _IGridppReportEvents_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 _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecord);
  Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecord);

  RemoveHandler Report.FetchRecord, AddressOf ReportFetchRecord
  AddHandler Report.FetchRecord, AddressOf ReportFetchRecord
多个用户报告多线程调用失败,我们也测试到这样的情况。执行如下命令后,重新注册组件的COM注册表信息,多线程调用就可以正常运行。
regsvr32 "C:\GridReport 6\gregn6.dll"
regsvr32 "C:\GridReport 6\grdes6.dll"
根据如上解决过程分析,估计是不同模块的COM注册信息有点冲突,特别是报表组件与WEB报表服务器冲突的可能性最大,暂时没搞明白安装方面的解决办法,当前版本也不方便调整COM的CLSID值。
把项目下的 bin 与 debug 目录也删掉 
参考例子 Advance\CustomGroup,只要注意报表事件 FetchRecord 中的相关代码。 
参考例子 CSharp\Advance\PrintDataGridView 
参看例子 Advance\CustomGroup,只要看报表事件 FetchRecord 部分 
一般与 ADO 有关,如果是 release 版本错误,与编译选项中的"启用字符池"这项可能有关系。
GRFetchRecordFromDataSet(Report :TGridppReport; DataSet :TDataSet; DisplayText :Boolean)
定义在 GRUtility 中。 
因 Delphi 与 C++Builder 有太多的版本,没法逐个版本测试,根据用户反馈的信息,各个版本应该都是可以用的。
在安装开发者安装包之后,请参考“C:\GridReport7\Samples\QT”目录下的说明。

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