问题出现在红色代码处:
    int CurProductID = (int)odr["Productid"];
    while (CurProductID == (int)odr["Productid"])
    {
     DateTime dt = (DateTime)odr["OrderDate"];
     int FieldIndex = SumByMonth? (dt.Month-1) : (dt.Month-1) / 3;
     Report.DetailGrid.Recordset.Fields[m_AmtFieldIndexs[FieldIndex]].AsFloat += (double)odr["Amount"];
     Report.DetailGrid.Recordset.Fields[m_QtyFieldIndexs[FieldIndex]].AsInteger += (int)(Int16)odr["Quantity"];

if ( !odr.Read() )
      break;
    }
经斑竹修改后:
private void ReportFetchRecord(ref bool Eof)
  {
   OleDbConnection ocnnNorthwind = new OleDbConnection(GridppReportDemo.Utility.GetDatabaseConnectionString());
   OleDbCommand ocmd = new OleDbCommand("select d.Productid,p.ProductName,m.OrderDate,d.Quantity,d.UnitPrice*d.Quantity*(1-d.Discount) as Amount "
    + "from orders m inner join ([Order Details] d inner join Products p on d.ProductID=p.ProductID) "
    + "on m.orderid=d.orderid "
    + "where m.OrderDate between #1/1/97# And #12/31/97# "
    + "order by d.Productid,m.OrderDate", ocnnNorthwind);
   ocnnNorthwind.Open();
   OleDbDataReader odr = ocmd.ExecuteReader(CommandBehavior.CloseConnection);

int DataGroupCount = SumByMonth? 12 : 4;
   int CurProductID = -1; //(int)odr["ProductID"];
   while ( odr.Read() )
   {
    if (CurProductID != (int)odr["ProductID"])
    {
     //提交上一笔数据
     if (CurProductID > 0)
      Report.DetailGrid.Recordset.Post();

Report.DetailGrid.Recordset.Append();

//设初值
     for (int i=0; i<DataGroupCount; ++i)
     {
      ((IGRField)m_pAmtFields[i]).AsFloat = 0;
      ((IGRField)m_pQtyFields[i]).AsFloat = 0;
     }
     m_pProductIDField.Value = odr["ProductID"];
     m_pProductNameField.Value = odr["ProductName"];

CurProductID = (int)odr["ProductID"];
    }

DateTime dt = (DateTime)odr["OrderDate"];
    int FieldIndex = SumByMonth? (dt.Month-1) : (dt.Month-1) / 3;
    ((IGRField)m_pAmtFields[FieldIndex]).AsFloat += (double)odr["Amount"];
    ((IGRField)m_pQtyFields[FieldIndex]).AsInteger += (int)(Int16)odr["Quantity"];
   }

//提交最后一笔数据
   Report.DetailGrid.Recordset.Post();

odr.Close();
  }

http://www.rubylong.cn/bbs/dispbbs.asp?boardID=8&ID=4699&page=1

转载于:https://www.cnblogs.com/Godblessyou/archive/2007/12/17/1003453.html

高级交叉报表例子程序(C#)中明细列统计数据错误改正!相关推荐

  1. matlab输出多个参数到表格固定列,matlab将excle的列提取出来?如何使用Matlab提取Excel中指定列的数据?...

    MATLAB 在txt文件中怎么提取数据,并将那三列数据转化为EXCLE格式? 在matlab中 file import data number of text header lines 改成6 下一 ...

  2. c语言代码存放的区域 堆栈,C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)...

    BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段 :数据 ...

  3. 2.0中获取数据库连接统计数据

    作者: http://blog.joycode.com/liuhuimiao/ .NET 2.0中的SqlConnection多了一个StatisticsEnabled属性和ResetStatisti ...

  4. excel中整列填充数据方法

    1.在某列中的任一个单元格中写入数据,选中该列中自写入数据向下的.需要填充数据的单元格, 按键盘Ctrl+D,就会自动用第一个单元格中的数据填充选中的单元格. 2.如果前面几列中有数据,需要填充后面的 ...

  5. 中登公司统计数据好像有问题,看不懂。

    中国证券登记结算有限责任公司 在网上公布每周统计数据 http://www.chinaclear.cn/zdjs/xmzkb/center_mzkb.shtml 俺一直跟踪中登公司发布的新开户数据,比 ...

  6. C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)

    BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段 :数据 ...

  7. python 预测下一年数据 程序_python中神经网络预测时间序列数据

    我是神经网络的初学者,尝试用python语言预测5个输入的温度值(输出).我使用python中的keras包来工作神经网络.在 此外,我使用了两种算法,即前向神经网络(回归)和递归神经网络(LSTM) ...

  8. 在微信小程序项目中使用mock模拟数据

    之前对mockjs做了一个介绍,以及在js.vue中拦截ajax的方法,介绍是必看的,也是一些基础 mockjs介绍总结 mockjs拦截ajax 在vue项目中使用mock拦截axios请求 这一篇 ...

  9. 小程序js中data获取服务器数据,微信小程序 获取javascript 里的数据

    微信小程序 获取javascript 里的数据 wxml如何获取js里的数据 例: wxml里: {{txt}} 通过上面的{{txt}}可以对应获取js里data下定义的txt的值 js里: dat ...

最新文章

  1. 单机塔防游戏推荐_电脑高自由度单机游戏推荐
  2. Surface Computing
  3. 布尔类型的值包括( )和( )_布尔类型
  4. 把远程仓库的项目,clone到eclipse里面
  5. java invokeall 阻塞_ExecutorService.invokeAll并关闭
  6. Zigbee如何在智能家居中成为领先的连接技术?
  7. 《例说51单片机(C语言版)(第3版)》一1.7 实时练习
  8. Android修改高度,android – 如何在运行时更改软键盘的高度?
  9. pyspark读取csv_手把手教你实现PySpark机器学习项目——回归算法
  10. 安装Docker Desktop报错WSL 2 installation is incomplete
  11. P问题、NP问题、NPC问题、NP hard问题
  12. js实现前端数据分页
  13. 关于小米驱动程序的问题
  14. 问卷星中问卷设计的一些设置----笔记
  15. 微信小程序——婚礼邀请函页面
  16. 乐拼拼购系统开发(源码成品)
  17. 随机变量序列的两种收敛性
  18. ubuntu20.04 GPU基准测试
  19. excel matlab日期,Excel日期格式在matlab中的转换
  20. 云计算 --day05

热门文章

  1. system , DOS 命令
  2. 【Linux 内核】Linux 内核源码目录说明 ① ( arch 目录 | block 目录 | certs 目录 | crypto 目录 | Documentation 目录 )
  3. 【数字信号处理】傅里叶变换性质 ( 序列对称分解定理示例 | 共轭对称序列与原序列之间的关系 | 共轭反对称序列与原序列之间的关系 )
  4. 【Android Gradle 插件】Extension 扩展类型 ( Module 引入插件类型 | application 插件 | library 插件 | Variants 变体列表 )
  5. 【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )
  6. 【C 语言】数组作为参数退化为指针问题 ( 问题描述 | 从编译器角度分析该问题 | 出于提高 C 语言执行效率角度考虑 | 数组作为参数的推荐方案 )
  7. 【Windows 逆向】OD 调试器工具 ( 分析 OD 硬件断点处的关键代码 | 添加硬件断点 | 关键代码 | MOV 指令 | EAX 寄存器值分析 | 使用命令查看 esi+0cc 地址 )
  8. 【错误记录】Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )
  9. 【Flutter】Flutter 项目中使用 Flutter 插件 ( Flutter 插件管理平台 | 搜索 Flutter 插件 | 安装 Flutter 插件 | 使用 Flutter 插件 )
  10. 【Android 电量优化】JobScheduler 相关源码分析 ( ConnectivityController 底层源码分析 | 构造函数 | 追踪任务更新 | 注册接收者监听连接变化 )