我在Access 2010中有一个sub,它以一个数百万美元(txtSumEstimatedValue
)的总成本为单位,并将其乘以1,000,000,以全部美元(DesignEstProgramValue
)计算成本。问题在于,每当其中一项成本发生变化时,最终成本就会变为0,我不知道为什么。我尝试添加Parent.Dirty=False
,但这不起作用。
这是我正在使用的代码。
Private Sub Est_Value_AfterUpdate()
'Recalculate estimated value
Me.Recalc
Parent.[DesignEstProgramValue] = (Me.txtSumEstimatedValue) * 1000000
'Update date
Parent.[UpdatedCosts] = Date
Parent![Updated Costs].Requery
Parent!Text263.Requery
End Sub
答案 0 :(得分:1)
检查这个更简单的代码版本......
Private Sub Est_Value_AfterUpdate()
Parent.[DesignEstProgramValue] = (Me.txtSumEstimatedValue) * 1000000
End Sub
当用户更改名为 Est_Value 的控件中的值时,Est_Value_AfterUpdate 运行。但在该程序中,您并未使用 Est_Value 的值。相反,您使用名为 txtSumEstimatedValue 的控件的值。那个控制的价值是什么?
通过在您的程序中加入此行来了解。
MsgBox "The value of txtSumEstimatedValue is '" & Nz(Me.txtSumEstimatedValue.Value, "Null") & "'"
由于您知道 Est_Value 在 Est_Value_AfterUpdate 运行时包含正确的源值,因此请在您的过程中使用该值:
Private Sub Est_Value_AfterUpdate()
'Parent.[DesignEstProgramValue] = (Me.txtSumEstimatedValue) * 1000000
Parent.[DesignEstProgramValue] = Me.Est_Value.Value * 1000000
End Sub