高级交叉报表例子程序(C#)中明细列统计数据错误改正!
问题出现在红色代码处:
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#)中明细列统计数据错误改正!相关推荐
- matlab输出多个参数到表格固定列,matlab将excle的列提取出来?如何使用Matlab提取Excel中指定列的数据?...
MATLAB 在txt文件中怎么提取数据,并将那三列数据转化为EXCLE格式? 在matlab中 file import data number of text header lines 改成6 下一 ...
- c语言代码存放的区域 堆栈,C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)...
BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段 :数据 ...
- 2.0中获取数据库连接统计数据
作者: http://blog.joycode.com/liuhuimiao/ .NET 2.0中的SqlConnection多了一个StatisticsEnabled属性和ResetStatisti ...
- excel中整列填充数据方法
1.在某列中的任一个单元格中写入数据,选中该列中自写入数据向下的.需要填充数据的单元格, 按键盘Ctrl+D,就会自动用第一个单元格中的数据填充选中的单元格. 2.如果前面几列中有数据,需要填充后面的 ...
- 中登公司统计数据好像有问题,看不懂。
中国证券登记结算有限责任公司 在网上公布每周统计数据 http://www.chinaclear.cn/zdjs/xmzkb/center_mzkb.shtml 俺一直跟踪中登公司发布的新开户数据,比 ...
- C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段 :数据 ...
- python 预测下一年数据 程序_python中神经网络预测时间序列数据
我是神经网络的初学者,尝试用python语言预测5个输入的温度值(输出).我使用python中的keras包来工作神经网络.在 此外,我使用了两种算法,即前向神经网络(回归)和递归神经网络(LSTM) ...
- 在微信小程序项目中使用mock模拟数据
之前对mockjs做了一个介绍,以及在js.vue中拦截ajax的方法,介绍是必看的,也是一些基础 mockjs介绍总结 mockjs拦截ajax 在vue项目中使用mock拦截axios请求 这一篇 ...
- 小程序js中data获取服务器数据,微信小程序 获取javascript 里的数据
微信小程序 获取javascript 里的数据 wxml如何获取js里的数据 例: wxml里: {{txt}} 通过上面的{{txt}}可以对应获取js里data下定义的txt的值 js里: dat ...
最新文章
- 单机塔防游戏推荐_电脑高自由度单机游戏推荐
- Surface Computing
- 布尔类型的值包括( )和( )_布尔类型
- 把远程仓库的项目,clone到eclipse里面
- java invokeall 阻塞_ExecutorService.invokeAll并关闭
- Zigbee如何在智能家居中成为领先的连接技术?
- 《例说51单片机(C语言版)(第3版)》一1.7 实时练习
- Android修改高度,android – 如何在运行时更改软键盘的高度?
- pyspark读取csv_手把手教你实现PySpark机器学习项目——回归算法
- 安装Docker Desktop报错WSL 2 installation is incomplete
- P问题、NP问题、NPC问题、NP hard问题
- js实现前端数据分页
- 关于小米驱动程序的问题
- 问卷星中问卷设计的一些设置----笔记
- 微信小程序——婚礼邀请函页面
- 乐拼拼购系统开发(源码成品)
- 随机变量序列的两种收敛性
- ubuntu20.04 GPU基准测试
- excel matlab日期,Excel日期格式在matlab中的转换
- 云计算 --day05
热门文章
- system , DOS 命令
- 【Linux 内核】Linux 内核源码目录说明 ① ( arch 目录 | block 目录 | certs 目录 | crypto 目录 | Documentation 目录 )
- 【数字信号处理】傅里叶变换性质 ( 序列对称分解定理示例 | 共轭对称序列与原序列之间的关系 | 共轭反对称序列与原序列之间的关系 )
- 【Android Gradle 插件】Extension 扩展类型 ( Module 引入插件类型 | application 插件 | library 插件 | Variants 变体列表 )
- 【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )
- 【C 语言】数组作为参数退化为指针问题 ( 问题描述 | 从编译器角度分析该问题 | 出于提高 C 语言执行效率角度考虑 | 数组作为参数的推荐方案 )
- 【Windows 逆向】OD 调试器工具 ( 分析 OD 硬件断点处的关键代码 | 添加硬件断点 | 关键代码 | MOV 指令 | EAX 寄存器值分析 | 使用命令查看 esi+0cc 地址 )
- 【错误记录】Android Studio 编译报错 ( VirtualApp 编译 NDK 报错 | Error:A problem occurred configuring project ‘: )
- 【Flutter】Flutter 项目中使用 Flutter 插件 ( Flutter 插件管理平台 | 搜索 Flutter 插件 | 安装 Flutter 插件 | 使用 Flutter 插件 )
- 【Android 电量优化】JobScheduler 相关源码分析 ( ConnectivityController 底层源码分析 | 构造函数 | 追踪任务更新 | 注册接收者监听连接变化 )