以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]对每天变动的库存余量进行统计汇总问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=50562) |
-- 作者:cnyoung -- 发布时间:2014/5/9 7:18:00 -- [求助]对每天变动的库存余量进行统计汇总问题 我有库存表--记录着A、B、C三种商品的每天库存余量(来自于子表的sum求和,有时候出现空值),如下表: 日期 商品编号 余量 2014-2-1 A 500 2014-2-2 B 600 2014-2-3 C 700 2014-2-6 B 500 2014-2-7 A 400 2014-2-9 B 350 现在想每当一种商品余量发生变化后都统计A、B、C三种商品总的余量(每种商品最近一天的记录)到总库存表中: 日期 总余量 2014-2-1 500 2014-2-2 1100 2014-2-3 1800 2014-2-6 1700 2014-2-7 1600 2014-2-9 1450 实现上述目的,我在库存余量表中表属性DataRowAdded中编写代码: 1、用sp = dt.GetValues("商品编号")取得不同商品编号 2、用dr1=DataTables("库存余量").find("商品编号=\'" & sp & "\'","时间 desc")找到每种商品的最近一天的记录 3、用For Each sp1 As String In sp统计总余量:total=total+dr1("余量") 4、然后在总库存表中新增一行dr,把统计总余量total的值赋给dr("总余量") 出现错误信息:Exception has been thrown by the target of an invocation. Object reference not set to an instance of an object. 我怀疑sum出现空值,导致的,于是加了一条:iif(dr1("余量") Is Nothing ,total,total=total+dr1("余量") ) 我应该怎么实现上述目的? [此贴子已经被作者于2014-5-9 7:28:39编辑过]
|
-- 作者:Bin -- 发布时间:2014/5/9 8:48:00 -- 应该在DataColChanged事件中计算才对,请上个例子吧 |
-- 作者:cnyoung -- 发布时间:2014/5/9 9:09:00 -- 我描述的就是这个例子 全代码如下: Dim dt As DataTable = DataTables("库存余量") Dim Total As Double=0 Dim sp As List(Of String) sp = dt.GetValues("商品编号") Dim dr As DataRow=DataTables("总库存").addnew For Each sp1 As String In sp Dim dr1 As DataRow dr1=DataTables("库存余量").find("客户编号=\'" & sp1 & "\'","时间 desc") Total=Total+dr("余量") iif(dr1("余量") Is Nothing ,total,=total+dr1("余量") ) Next dr("时间")=Date.Today dr("总余量")=Total |
-- 作者:Bin -- 发布时间:2014/5/9 9:13:00 -- YOU文件例子直观一点 |
-- 作者:cnyoung -- 发布时间:2014/5/9 9:15:00 -- 加了那个判断还是出现那个错误 [此贴子已经被作者于2014-5-9 11:25:54编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/5/9 9:28:00 -- 加一个判断
Dim dt As DataTable = DataTables("库存余量")
|
-- 作者:cnyoung -- 发布时间:2014/5/9 11:44:00 -- 请帮助解决啊 |
-- 作者:cnyoung -- 发布时间:2014/5/9 12:03:00 -- 也许我写的代码用的命令不对,有更好的命令来筛选 |
-- 作者:cnyoung -- 发布时间:2014/5/9 12:09:00 -- 当用A代替dr1=DataTables("库存余量").find("商品编号=\'A\'","时间 desc")中的SP进行调试时,for each 统计了4次,可是总共才A/B/C 三个商品编号啊,应该循环3次啊? |
-- 作者:有点甜 -- 发布时间:2014/5/9 12:11:00 -- 以下是引用cnyoung在2014-5-9 12:03:00的发言:
也许我写的代码用的命令不对,有更好的命令来筛选
问题没头没尾,谁知道怎么帮你写代码啊
要么,上传一个例子;
要么,用下面的代码测试一下
Dim dt As DataTable = DataTables("库存余量") Dim sp As List(Of String) For Each sp1 As String In sp
|