Foxtable(狐表)用户栏目专家坐堂 → 如何计算BOM零件数量


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

主题:如何计算BOM零件数量

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
如何计算BOM零件数量  发帖心情 Post By:2018/8/2 16:24:00 [只看该作者]

数据表A 数据表B
产品编号 零件 产品编号 bom零件数
45216-598-50 45216-610-50 45216-598-50 6
45216-598-50 45216-617-01 77732-331-02 2
45216-598-50 45216-618-01 77732-331-04 0
45216-599-50 45216-610-52
45216-599-50 45216-617-01
45216-599-50 45216-618-01
77732-331-02 45217-331-02
77732-331-02 45217-332-01

我希望在数据表B输入一个产品编号时,系统能够去数据表A里面的“产品编号”一列查找同编号的产品数量,并将计数结果填写在“bom零件数”一栏,如果没有找到同编号的产品,就填写“0”。那么数据表B的 datacolchanged 代码要怎样写?谢谢。

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


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


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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/8/3 17:05:00 [只看该作者]

有效。谢谢。

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/10/11 17:18:00 [只看该作者]

我的数据表“装配清单”有数据列:产品代号、零件代号、零件用量;我的数据表“JPK612任务单”有数据列:类型一、含零件数

If e.DataCol.Name = "类型一" Then 
    If DataTables("装配清单").Compute("count(产品代号)","[产品代号] = '" & e.NewValue & "'") = 0
        e.DataRow("含零件数") = "无装配清单"
    Else
        e.DataRow("含零件数") = DataTables("装配清单").Compute("count(产品代号)","[产品代号] = '" & e.NewValue & "'") 
    End If
End If

以上是数据表“JPK612任务单”之datacolchanged 里面的代码,用于统计装配清单之零件数。

现在的问题是,如果“装配清单”里面增加或者删除了数据行,怎么让“JPK612任务单”里面的含零件数也跟着变化。谢谢。

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


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


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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/10/12 17:33:00 [只看该作者]

Select Case e.DataCol.Name
    Case "零件代号","零件用量"
        Dim pr As DataRow
        pr = DataTables("JPK612任务单").Find("类型一 = '" & e.DataRow("产品代号") & "'")
        If pr IsNot Nothing Then
            DataTables("JPK612任务单").DataCols("类型一").RaiseDataColChanged(pr)
        End If
End Select

我在“装配清单”datacolchanged里面使用了上述代码,但是当我“装配清单”增加一行数据行之后,“JPK612任务单”里面的含零件数不会发生变化。

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


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

改成下面,弹出什么?

 

Select Case e.DataCol.Name
    Case "零件代号","零件用量","产品代号"
        Dim pr As DataRow
msgbox(e.DataRow("产品代号"))
msgbox(e.DataRow("零件代号"))
        pr = DataTables("JPK612任务单").Find("类型一 = '" & e.DataRow("产品代号") & "'")
        If pr IsNot Nothing Then
msgbox("找到")
            DataTables("JPK612任务单").DataCols("类型一").RaiseDataColChanged(pr)
Else
msgbox("没找到")
        End If
End Select

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/10/13 10:54:00 [只看该作者]

在“装配清单”中加入一行数据后,第一个msgbox会弹出刚刚输入的产品代号,第二个msgbox则是空的,第三个msgbox的内容是“找到”,第四个msgbox的内容是刚刚输入的产品代号,第五个msgbox则是“v12183002”,第六个msgbox则是“找到”。而在“JPK612任务单”里面,最后只有第一行的“含零件数”会发生改变,其他数据行的“含零件数”则不会发生改变。

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110746 积分:563656 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/13 11:37:00 [只看该作者]

重新贴出2个表datacolchanged代码看看,保留msgbox。同时截图看看2个表数据

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


加好友 发短信
等级:七尾狐 帖子:1551 积分:10061 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/10/13 14:33:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:jpk612任务单代码.txt


图片点击可在新窗口打开查看此主题相关图片如下:jpk612任务单截图.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:装配清单截图.jpg
图片点击可在新窗口打开查看

请看以上文档。谢谢。

 回到顶部
总数 14 1 2 下一页