Access VBA中不稳定的组合框比较
Posted
技术标签:
【中文标题】Access VBA中不稳定的组合框比较【英文标题】:Erratic combobox comparison in Access VBA 【发布时间】:2020-04-19 05:46:54 【问题描述】:我已将表单上两个不同的未绑定组合框 cbo_MaxCost 和 cbo_MinCost 的行源设置为同一个表。这些组合框旨在为另一个表中的每条记录指定一系列值的最小值和最大值。为了确保他们这样做,我在每个组合框的 AfterUpdate 事件中设置了代码来检查
cbo_MaxCost >= cbo_MinCost
或警告用户出错。
问题是,此检查执行不规律。例如,有时 Access VBA 会评估
21 > 11
为假,其他时候为真。使用点和感叹号符号没有区别,使用“我”也没有区别。与否,或“.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
【问题讨论】:
代码在什么事件中?编辑问题以显示所有相关代码。组合框是否绑定到数字类型字段? 【参考方案1】:请记住,组合框/列表框总是返回 文本,所以在比较之前转换为数字:
CCur(Me!cbo_MaxCost.Value) >= CCur(Me!cbo_MinCost.Value)
【讨论】:
我会尽快尝试的。 一个 UNBOUND 组合框或列表框返回文本。 你的建议奏效了!感谢您提供所有信息。以上是关于Access VBA中不稳定的组合框比较的主要内容,如果未能解决你的问题,请参考以下文章