以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  datacolchanged遇到问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184727)

--  作者:温馨的大树
--  发布时间:2022/12/26 18:52:00
--  datacolchanged遇到问题
Dim dr As DataRow = e.DataRow
Case  "调度操作_车费","车费垫付", "车费报销", "车费员工", "车费公司"
        If dr.IsNull("车费垫付") = False Then           
            If dr("车费垫付") = "员工" Then
                dr("车费员工") = dr("调度操作_车费")
                dr("车费公司") = 0
            End If
            If dr("车费垫付") = "公司" Then
                If dr("车费报销") = True Then
                    dr("车费公司") = dr("调度操作_车费")
                    dr("车费员工") = 0
                Else
                    dr("车费公司") = 0
                    dr("车费员工") = 0
                End If
            End If
        End If

代码如上,输入调度操作_车费新值时,比如车费垫付是员工时,车费员工的金额不会更新,不过刷新车费垫付列,又可以做到更新,不知道什么原因,麻烦老师指点一下!

--  作者:有点蓝
--  发布时间:2022/12/26 19:55:00
--  
"调度操作_车费"是表达式列?

贴出完整代码

--  作者:温馨的大树
--  发布时间:2022/12/26 20:38:00
--  
不是表达式列,就是车费的金额
--  作者:温馨的大树
--  发布时间:2022/12/26 20:44:00
--  
车费报销是逻辑列,车费垫付有员工和公司两个选项,其它的都是数据列,金额来的。希望实现的是,调度操作车费变更了,如果是员工垫付就同时更车费员工列的金额
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.name
Case  "调度操作_车费","车费垫付", "车费报销", "车费员工", "车费公司"
        If dr.IsNull("车费垫付") = False Then           
            If dr("车费垫付") = "员工" Then
                dr("车费员工") = dr("调度操作_车费")
                dr("车费公司") = 0
            End If
            If dr("车费垫付") = "公司" Then
                If dr("车费报销") = True Then
                    dr("车费公司") = dr("调度操作_车费")
                    dr("车费员工") = 0
                Else
                    dr("车费公司") = 0
                    dr("车费员工") = 0
                End If
            End If
        End If
end select

--  作者:有点蓝
--  发布时间:2022/12/26 20:49:00
--  
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.name
Case  "调度操作_车费","车费垫付", "车费报销"
msgbox(dr.IsNull("车费垫付"))
msgbox(dr("调度操作_车费"))
        If dr.IsNull("车费垫付") = False Then           
msgbox(dr("车费垫付"))
            If dr("车费垫付") = "员工" Then
                dr("车费员工") = dr("调度操作_车费")
msgbox(“车费员工赋值后=” & dr("车费员工"))
                dr("车费公司") = 0
            elseIf dr("车费垫付") = "公司" Then
msgbox(dr("车费报销") )
                If dr("车费报销") = True Then
                    dr("车费公司") = dr("调度操作_车费")
msgbox(“车费公司赋值后=” & dr("车费公司"))
                    dr("车费员工") = 0
                Else
                    dr("车费公司") = 0
                    dr("车费员工") = 0
                End If
            End If
        End If
end select

--  作者:温馨的大树
--  发布时间:2022/12/27 2:12:00
--  
谢谢老师,解决了问题,我看了下不同的地方就是,我的代码里面caes 多了 "车费员工", "车费公司"这两个列名,就出现我说的问题了,为什么会这样呢?
--  作者:有点蓝
--  发布时间:2022/12/27 9:01:00
--  
需要赋值的列,不放到case里。case里是数据更改后要做后续处理的列