Foxtable(狐表)用户栏目专家坐堂 → datacolchanged 代码问题


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

主题:datacolchanged 代码问题

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


加好友 发短信
等级:六尾狐 帖子:1471 积分:9546 威望:0 精华:0 注册:2014/12/18 16:12:00
datacolchanged 代码问题  发帖心情 Post By:2021/7/12 18:22:00 [只看该作者]

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

上面的代码,当“销售数量”变大时,“腾龙供料汇总”那里的结果是“销售总量”的数值是加倍的;但是当“销售数量”变小时,“腾龙供料汇总”那里减的过程是没问题的。请问是哪里的问题呢?谢谢。


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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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,看另一种更新方式

 回到顶部