以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何计算BOM零件数量 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122821) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:edisontsui -- 发布时间:2018/8/2 16:24:00 -- 如何计算BOM零件数量
我希望在数据表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 --
|