以下是引用kevin11在2011-9-26 20:57:00的发言:
那有什么办法可以设置成只有分摊方法和分摊对象都选择后才计算,没选的不计算??谢谢了!!!!急死人了。。。。
你错得一塌糊涂,表A的DataColoChanged事件代码中,下面红色这一行是什么意思? 表A和表A存在关联吗?
Select Case e.DataCol.name
Case "付款金额"
Dim pr As DataRow = e.DataRow.GetParentRow("表A")
If pr IsNot Nothing AndAlso pr("付款金额") > pr("合同金额")
e.DataRow("付款金额") = e.OldValue
messagebox.show("付款金额超过合同金额")
End If
End Select
下面这样的计算更是乱来的,表达式是针对整列的,不是一行的:
If e.DataCol.Name = "分摊方法" OrElse e.DataCol.Name = "分摊对
象" Then
If e.DataRow("分摊方法") = Nothing OrElse e.DataRow("分摊对象") = Nothing Then
DataTables("表A").DataCols("合同分摊_住宅").Expression = ""
Else
If e.DataRow("分摊方法") = "占地面积法" AndAlso e.DataRow("分摊对象") = "全项目" Then
DataTables("表A").DataCols("合同分摊_住宅").Expression = "占地面积_住宅/(占地面积_住宅+占地面积_购物中心+占地面积_商务酒店)* 合同金额"
End If
End If
End If
下面帮你解决一个问题: 那有什么办法可以设置成只有分摊方法和分摊对象都选择后才计算。
解决方法很简单,删除DataColChanged中的第二段代码,将“合同分摊_住宅”这一列的表达式设置为:
IIF([分摊方法] IS NOT NULL And [分摊对象] IS NOT NULL, 占地面积_住宅/(占地面积_住宅+占地面积_购物中心+占地面积_商务酒店)* 合同金额,NULL)
编程是严谨的,你很有天赋,但是明显操之过急,建议你重新看帮助,从使用指南开始看。
使用指南很重要,很多基本概念,例如关联和表达式,都是在使用指南讲述的,会使用,才谈得上开发。
[此贴子已经被作者于2011-9-26 21:19:42编辑过]