以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何计算BOM零件数量  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=122821)

--  作者:edisontsui
--  发布时间:2018/8/2 16:24:00
--  如何计算BOM零件数量
数据表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 代码要怎样写?谢谢。

--  作者:有点甜
--  发布时间:2018/8/2 16:42:00
--  

参考

 

http://www.foxtable.com/webhelp/scr/1472.htm

 


--  作者:edisontsui
--  发布时间:2018/8/3 17:05:00
--  
有效。谢谢。
--  作者:edisontsui
--  发布时间: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任务单”里面的含零件数也跟着变化。谢谢。

--  作者:有点甜
--  发布时间:2018/10/11 17:32:00
--  

重置列

 

http://www.foxtable.com/webhelp/scr/1472.htm

 


--  作者:edisontsui
--  发布时间: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任务单”里面的含零件数不会发生变化。

--  作者:有点甜
--  发布时间: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
--  发布时间:2018/10/13 10:54:00
--  
在“装配清单”中加入一行数据后,第一个msgbox会弹出刚刚输入的产品代号,第二个msgbox则是空的,第三个msgbox的内容是“找到”,第四个msgbox的内容是刚刚输入的产品代号,第五个msgbox则是“v12183002”,第六个msgbox则是“找到”。而在“JPK612任务单”里面,最后只有第一行的“含零件数”会发生改变,其他数据行的“含零件数”则不会发生改变。
--  作者:有点蓝
--  发布时间:2018/10/13 11:37:00
--  
重新贴出2个表datacolchanged代码看看,保留msgbox。同时截图看看2个表数据
--  作者:edisontsui
--  发布时间:2018/10/13 14:33:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:jpk612任务单代码.txt


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

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

请看以上文档。谢谢。