Foxtable(狐表)用户栏目专家坐堂 → 统计零件需求


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

主题:统计零件需求

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/5/22 11:33:00 [显示全部帖子]

For Each key As String In dic.keys
      Dim dr As DataRow = DataTables("零件需求").AddNew()
      dr("零件") = key
      dr("需求数量") = dic(key)
Next

 

改为:

 

For Each key As String In dic.keys
       Dim dr As DataRow 

       dr = DataTables("零件需求").Find("零件 Is Null ")

       if dr is nothing then

             dr = DataTables("零件需求").AddNew()

       end if
       dr("零件") = key
      dr("需求数量") = dic(key)
Next


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/5/24 8:02:00 [显示全部帖子]

帮助的物料需求示例,其实有更简单的方法,看看:

 

这是一个很经典的跨表统计的实例,下面我们用三种不同的方法,来得到这个需求统计表。

 

方法一

用SQLGroupTableBuilder,在窗口或者菜单新建一个按钮,将其代码设置为:

 

Dim gb As new SQLGroupTableBuilder("统计表","零件用量")
gb.AddTable("零件用量","产品","生产计划","产品")
gb.Groups.AddDef("零件")
gb.Totals.AddExp("需求数量","[生产数量] * [用量]")
gb.Build()
MainTable = Tables("统计表")

 

方法二

用SQLJoinTableBuilder,在窗口或者菜单新建一个按钮,将其代码设置为:

 

Dim jb As new SQLJoinTableBuilder("统计表","零件用量")
jb.AddTable("零件用量","产品","生产计划","产品")
jb.AddCols("零件",True)
jb.AddExp("需求数量","sum([生产数量] * [用量])")
jb.Build()
MainTable = Tables("统计表")

 

方法三

我们也可以自己直接编码实现,步骤:

 

1、需要事先设计一个名为“零件需求”的表,包括零件和需求数量两列。
2、然后新建一个菜单或窗口按钮,将其代码设置为:

 

Dim dic As new Dictionary(of String,Integer)
DataTables("零件需求").DataRows.Clear()
For Each dr1 As DataRow In DataTables("生产计划").DataRows
    For Each dr2 As DataRow In DataTables("零件用量").Select("[产品] = '" & dr1("产品") & "'")
        Dim nm As String = dr2("零件")
        Dim vl As Integer = dr1("生产数量") * dr2("用量")
        If dic.ContainsKey(nm) = False
            dic.Add(nm,vl)
        Else
            dic(nm) = dic(nm)+ vl
        End If
    Next
Next
For Each key As String In dic.keys
    Dim dr As DataRow = DataTables("零件需求").AddNew()
    dr("零件") = key
    dr("需求数量") = dic(key)
Next

 

提示:

1、方法一和方法二是直接统计后台数据,所以新增或修改数据后,应该先保存,然后再统计,才能得到正确的结果。
2、方法三显然比方法一和方法二繁琐很多,之所以提供这个方法,目的是让大家再次熟悉一下字典(Dictionary)的用法。

 

 

 


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/5/25 9:15:00 [显示全部帖子]

用简单例子说话。

 回到顶部