【问题标题】:error 2115 on combobox selection选择组合框时出现错误 2115
【发布时间】:2016-01-08 12:41:48
【问题描述】:

我在表单上有一个组合框,在我对 access 数据库运行 SQL 查询后,我试图以编程方式选择组合框中的一个项目。 我使用以下代码迭代项目并设置所选项目:

'Make the appropriate location appear in the combobox
For i = 0 To cboLocations.ListCount - 1
  If Me.cboLocations.Column(0, i) = locindex Then
    Debug.Print "locindex: " & locindex & vbCrLf & " Me.cboLocations.Column(0, i):" & Me.cboLocations.Column(0, i)
    Me.cboLocations.SetFocus
    Me.cboLocations.ListIndex = i '<<< error 2115
    Exit For
  End If
Next i

如前所述,我不断收到错误 2115:为此字段设置为 BeforeUpdate 或 ValidationRule 属性的宏或函数阻止 Access 保存该字段中的数据。

错误消息中指示的此组合框的任何属性均未设置为任何值。所以我被困住了。请指教。

【问题讨论】:

  • 解决了还是需要具体解释?

标签: ms-access vba ms-access-2010


【解决方案1】:

您可能正在与 BeforeUpdate 事件发生冲突。

尝试使用 AfterUpdate。

【讨论】:

  • 没有为组合框的更新前事件编写任何内容。我不知道从这里做什么。
  • 好吧,错误信息很清楚,所以在别处寻找要禁用的代码。
  • 没有帮助。其他人有什么建议吗?
【解决方案2】:

以编程方式选择组合框中的一项

我一直这样做的方式是像这样为组合的Value 分配一些东西......

Me.MyCombo.Value = "target text"

Value 来自组合选定行的绑定列。 (您可以在组合属性表的 Data 选项卡上找到 Bound Column。)相反,将 “目标文本” 分配给 Value 选择匹配的行。

在您的情况下,我认为您正在尝试选择包含与 locindex 变量相同的文本的组合行。如果这是真的,那么我认为你所需要的就是这个......

Me.cboLocations.Value = locindex

就你这样做时,更新前验证规则对我来说似乎都不是正确的选择。我建议您在查询后立即从您用于运行“数据库上的 SQL 查询”的任何代码中执行此操作。

【讨论】:

  • 谢谢。这实际上是我可以使用并且很有用的东西。我最终将 Me.cboLocations.ListIndex = i 替换为 Me.cboLocations.Value = Me.cboLocations.Column(1, i) 因为组合框中有两列并且还添加了 Me.cboLocations.Selected(i) = True 到确保在列表中选择了特定项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多