以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- datacolchanged 代码问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=170102) |
-- 作者:edisontsui -- 发布时间:2021/7/12 18:22:00 -- datacolchanged 代码问题 If e.DataCol.name = "销售数量" Then If e.DataRow("销售单号") IsNot Nothing Then Dim Filter2 As String = "[产品代号] = \'" & e.DataRow("产品代号") & "\'" Dim drs As List(Of DataRow) = DataTables("装配清单").Select(Filter2) For Each dr As DataRow In drs Dim dr2 As DataRow = DataTables("腾龙供料汇总").Find("销售单号 = \'" & e.DataRow("销售单号") & "\' and 指定用料 = \'" & dr("零件代号") & "\'") If dr2 IsNot Nothing Then If dr("零件类别") = "原料" Then dr2("销售总重") = dr2("销售总重") + (e.newvalue - e.oldvalue) * dr("零件用量")/1000 Else dr2("销售总重") = dr2("销售总重") + (e.newvalue - e.oldvalue) * dr("零件用量") End If dr2("销售总重输入记录") = User.Name & " " & Date.Now Else Dim dr3 As Row = Tables("腾龙供料汇总").AddNew() dr3("销售单号") = e.DataRow("销售单号") dr3("指定用料") = dr("零件代号") If dr("零件类别") = "原料" Then dr3("销售总重") = e.DataRow("销售数量") * dr("零件用量")/1000 Else dr3("销售总重") = e.DataRow("销售数量") * dr("零件用量") End If dr3("销售总重输入记录") = User.Name & " " & Date.Now End If Next End If End If 上面的代码,当“销售数量”变大时,“腾龙供料汇总”那里的结果是“销售总量”的数值是加倍的;但是当“销售数量”变小时,“腾龙供料汇总”那里减的过程是没问题的。请问是哪里的问题呢?谢谢。 |
-- 作者:有点蓝 -- 发布时间:2021/7/12 20:17:00 -- 这个事件还有没有其它代码? 调试看看 If e.DataCol.name = "销售数量" Then If e.DataRow("销售单号") IsNot Nothing Then msgbox(e.DataRow("销售数量")) Dim Filter2 As String = "[产品代号] = \'" & e.DataRow("产品代号") & "\'" Dim drs As List(Of DataRow) = DataTables("装配清单").Select(Filter2) msgbox(drs.count) For Each dr As DataRow In drs Dim dr2 As DataRow = DataTables("腾龙供料汇总").Find("销售单号 = \'" & e.DataRow("销售单号") & "\' and 指定用料 = \'" & dr("零件代号") & "\'") If dr2 IsNot Nothing Then msgbox(dr("零件类别")) If dr("零件类别") = "原料" Then msgbox(dr2("销售总重")) msgbox(e.newvalue - e.oldvalue) dr2("销售总重") = dr2("销售总重") + (e.newvalue - e.oldvalue) * dr("零件用量")/1000 Else dr2("销售总重") = dr2("销售总重") + (e.newvalue - e.oldvalue) * dr("零件用量") End If msgbox(dr2("销售总重")) dr2("销售总重输入记录") = User.Name & " " & Date.Now Else Dim dr3 As Row = Tables("腾龙供料汇总").AddNew() dr3("销售单号") = e.DataRow("销售单号") dr3("指定用料") = dr("零件代号") If dr("零件类别") = "原料" Then dr3("销售总重") = e.DataRow("销售数量") * dr("零件用量")/1000 Else dr3("销售总重") = e.DataRow("销售数量") * dr("零件用量") End If msgbox(dr2("销售总重")) dr3("销售总重输入记录") = User.Name & " " & Date.Now End If Next End If End If 另外建议使用统计的方式进行汇总计算:http://www.foxtable.com/webhelp/topics/1472.htm,看另一种更新方式
|