Foxtable(狐表)用户栏目专家坐堂 → [求助]对每天变动的库存余量进行统计汇总问题


  共有5021人关注过本帖树形打印复制链接

主题:[求助]对每天变动的库存余量进行统计汇总问题

帅哥哟,离线,有人找我吗?
cnyoung
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:378 威望:0 精华:0 注册:2014/3/29 18:06:00
[求助]对每天变动的库存余量进行统计汇总问题  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/9 8:48:00 [只看该作者]

应该在DataColChanged事件中计算才对,请上个例子吧

 回到顶部
帅哥哟,离线,有人找我吗?
cnyoung
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:378 威望:0 精华:0 注册:2014/3/29 18:06:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/5/9 9:13:00 [只看该作者]

YOU文件例子直观一点

 回到顶部
帅哥哟,离线,有人找我吗?
cnyoung
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:378 威望:0 精华:0 注册:2014/3/29 18:06:00
  发帖心情 Post By:2014/5/9 9:15:00 [只看该作者]



加了那个判断还是出现那个错误

[此贴子已经被作者于2014-5-9 11:25:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/9 9:28:00 [只看该作者]

 加一个判断

 

Dim dt As DataTable = DataTables("库存余量")
Dim Total As Double=0


Dim sp As List(Of String)
Customers = dt.GetValues("商品编号")
Dim dr As DataRow=DataTables("总库存").addnew


For Each sp1 As String In sp
    Dim dr1 As DataRow
    dr1=DataTables("资产变动").find("客户编号='" & sp1 & "'","日期 desc")
    If dr1 IsNot Nothing Then
        iif(dr1("余量") Is Nothing ,total,total=total+dr1("余量")  )
    End If
Next


dr("日期")=Date.Today
dr("总余量")=Total


 回到顶部
帅哥哟,离线,有人找我吗?
cnyoung
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:378 威望:0 精华:0 注册:2014/3/29 18:06:00
  发帖心情 Post By:2014/5/9 11:44:00 [只看该作者]

请帮助解决啊

 回到顶部
帅哥哟,离线,有人找我吗?
cnyoung
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:378 威望:0 精华:0 注册:2014/3/29 18:06:00
  发帖心情 Post By:2014/5/9 12:03:00 [只看该作者]

也许我写的代码用的命令不对,有更好的命令来筛选

 回到顶部
帅哥哟,离线,有人找我吗?
cnyoung
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:34 积分:378 威望:0 精华:0 注册:2014/3/29 18:06:00
  发帖心情 Post By:2014/5/9 12:09:00 [只看该作者]

当用A代替dr1=DataTables("库存余量").find("商品编号='A'","时间 desc")中的SP进行调试时,for each 统计了4次,可是总共才A/B/C 三个商品编号啊,应该循环3次啊?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/9 12:11:00 [只看该作者]

以下是引用cnyoung在2014-5-9 12:03: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")
    If dr1 IsNot Nothing Then
        iif(dr1("余量") Is Nothing ,total,total=total+dr1("余量")  )
    End If
Next


dr("日期")=Date.Today
dr("总余量")=Total


 回到顶部
总数 31 1 2 3 4 下一页