【问题标题】:MS Access runtime error 2115MS Access 运行时错误 2115
【发布时间】:2013-08-01 01:20:12
【问题描述】:

在 Ms Access 中,我有两个未绑定的组合框:StateBoxDVPCBox。 StateBox 只是美国各州的列表,而 DVPCBox 包含来自基于 StateBox 值的查询的员工姓名。

我正在尝试将 DVPCBox 的值设置为等于其列表中的第一项。由于员工列表是基于 StateBox 的值,因此我需要在每次 StateBox 更改时更新 DVPCBox 的值。我尝试了以下方法:

Private Sub StateBox_AfterUpdate()
    Me.DVPCBox.Requery
    If (Me.DVPCBox.ListCount = 1) Then
        Me.DVPCBox.SetFocus
        Me.DVPCBox.ListIndex = 0 //<-Error here
    End If
End Sub

但我收到运行时错误 2115 - 为此字段设置为 BeforeUpdate 或 ValidationRule 属性的宏或函数阻止 Microsoft Office Access 保存该字段中的数据。

对我来说最奇怪的是,我什至没有使用 BeforeUpdate 事件或 ValidationRule(据我所知)。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    ItemData(0) 是第一个组合框值。所以设置组合等于那个。

    Private Sub StateBox_AfterUpdate()
        Me.DVPCBox.Requery
        If (Me.DVPCBox.ListCount >= 1) Then
            Me.DVPCBox.SetFocus
            'Me.DVPCBox.ListIndex = 0 //<-Error here
            Me.DVPCBox = Me.DVPCBox.ItemData(0)
        End If
    End Sub
    

    我还更改了ListCount &gt;= 1,因为我假设当组合包含 2 行或更多行时,您也想做同样的事情。

    【讨论】:

    • 对不起,我错误地将您的代码复制到我的模块中,让我认为有错误。当我意识到这是我的错时,我删除了我的评论。您的解决方案就像一个魅力。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多