以下是引用czy在2008-9-26 15:15:00的发言:
应该这样吧?
dim sum1 As Double
dim sum2 As Double
sum1=DataTables("表B").Compute("Sum(金额)","[编号]='" & e.datarow("编号") & "'")
sum2=DataTables("表C").Compute("Sum(金额)","[编号]='" & e.datarow("编号") & "'")
e.datarow("代码金额")=sum1+sum2
4楼已按czy斑竹修正了,例子也重新上传,可是错误提示依然存在。
因为今天工作太忙了,我的马虎给老六和其他同仁造成麻烦,我深表道歉!
顶一下,希望能得到指点,或者是个bug吧,能得到排查。
我不知道是不是bug,但可以肯定,按钮代码执行时和
Datacolchanged事件有冲突。
正确的DataColChanged事件代码:
If e.DataCol.Name = "金额" Then
Dim dr As DataRow = e.Datarow.GetParentrow("表A")
if dr isnot nothing then
DataTables("表A").DataCols("代码金额").Recalc(dr)
end if
End If还有:
Dim exp As String = "[数量]*[单价]"
If e.DataCol.Name = "单价" or e.DataCol.Name = "数量" Then
e.DataRow("金额") = Eval(exp,e.DataRow)
End If
If e.DataCol.Name = "金额" Then
Dim dr As DataRow = e.Datarow.GetParentrow("表A")
if dr isnot Nothing then
DataTables("表A").DataCols("代码金额").Recalc(dr)
End if
End If
你必须加上判断,因为有的时候,数据行并没有对应的父行!
其余错误,请继续自行处理,搞不定的话,再继续提问。
[此贴子已经被作者于2008-9-26 20:01:28编辑过]
多谢老六的提醒,看来是编码的关键细节我没做到位,得好好总结了。
按老六的指点,已经避免了代码冲突,以上例子修正后OK,没有问题了 。
[此贴子已经被作者于2008-9-27 8:32:48编辑过]