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中不稳定的组合框比较的主要内容,如果未能解决你的问题,请参考以下文章

将组合框设置为另一个组合框的值 - Access Vba

如何更新 ms access vba 中的多值组合框?

Access VBA:根据非绑定列在组合框中查找项目

每次使用 access vba 在第一个组合中选择值时,清除链接组合框中的值

MS Access VBA 更新组合框表字段

如何在 MS Access 2010 中使用 VBA 选择多值组合框的值?