以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  重置问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=137562)

--  作者:huizhong
--  发布时间:2019/7/9 16:58:00
--  重置问题
老师,请教一下,以下代码我单行测试没有问题,但是使用重置代码 DataTables("发票台账").DataCols("发票号码").RaiseDataColChanged() 后结果有问题出现计算错误,您给看看是什么情况

ElseIf e.DataCol.Name = "发票号码" Then
    If e.OldValue <> e.NewValue Then
        e.DataRow("发生时间") = Date.Now
        e.DataRow("经手人") = User.Name
    End If
    Dim r As Row = Tables("发票台账").Current
    If r("窗口属性") = "XK" Then
        Dim Filter As String =  "[发票号码] = \'" & e.NewValue & "\' and [窗口属性] = \'XK\' "
        e.DataRow("虚开收款金额") = DataTables("财务收支台账").Compute("Sum(收款金额)", Filter)
        e.DataRow("虚开付款金额") = DataTables("财务收支台账").Compute("Sum(已付虚开)", Filter)
        Dim dr As DataRow
        dr= DataTables("财务收支台账").Find("[支付虚开发票号码] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing Then \'如果找到了同名的发票号码行,也就是dr不是Nothing
            e.DataRow("支付虚开时间") = dr("财务处理日期")
        End If
    Else
        e.DataRow("虚开收款金额") = Nothing
        e.DataRow("虚开付款金额") = Nothing
        e.DataRow("支付虚开时间") = Nothing
    End  If
End If

--  作者:狐狸爸爸
--  发布时间:2019/7/9 17:15:00
--  
  Dim r As Row = Tables("发票台账").Current

这种用法是不对的,事件中的所有代码都应该用e参数,否则你充值所有行,实际调用的还是当前行。
[此贴子已经被作者于2019/7/9 17:21:24编辑过]

--  作者:huizhong
--  发布时间:2019/7/9 17:39:00
--  
谢谢老师