我已经为表单上的两个不同的未绑定组合框cbo_MaxCost和cbo_MinCost将行源设置为同一个表。这些组合框用于为另一个表中的每个记录指定值范围的最小值和最大值。为了确保他们做到这一点,我在每个组合框的AfterUpdate事件中设置了代码,以检查
cbo_MaxCost >= cbo_MinCost
或者用错误警告用户。
问题是,此检查执行不稳定。例如,有时Access VBA会评估
21>11
为False,其他时间为True。使用句点和感叹号符号并没有区别,使用"Me."或".Value"也没有区别。遍历它表明Access在比较过程中从组合框中注册了正确的值。当我在其中一个框中选择比以前高得多或更低的值时,这种行为似乎更频繁发生。我不知道是什么原因造成的。
这是代码:
Private Sub cbo_MaxCost_AfterUpdate()
If cbo_MaxCost >= cbo_MinCost Then
MsgBox ("Access is calculating correctly.")
Else
MsgBox ("The maximum cost should be higher than the minimum.")
End If
End Sub
Private Sub cbo_MinCost_AfterUpdate()
If cbo_MaxCost >= cbo_MinCost Then
MsgBox ("Access is calculating correctly.")
Else
MsgBox ("The maximum cost should be higher than the minimum.")
End If
End Sub
请记住,组合框/列表框总是返回文本,因此在比较之前转换为数字:
CCur(Me!cbo_MaxCost.Value) >= CCur(Me!cbo_MinCost.Value)