MS Access为Combobox选中所有复选框绑定到Sharepoint多值字段

时间:2016-09-28 22:27:16

标签: vba ms-access sharepoint combobox access-vba

好吧,经过几周试图解决这个问题,并且(我认为)在99%的路上,我不得不承认失败,加入Stack Overflow并发布我的问题。如果我的问题礼仪不是很棒,我会道歉,但是这里就是这样;

正如标题所暗示的,我正在尝试为Access 2010表单中的组合框创建一个全选复选框。此组合框绑定到多值字段,该字段是SharePoint列表的一部分(我们数据库中的所有表都存储为SharePoint列表并链接到Access文件.Access文件实际上是前端)。

我已经设法让这个在没有链接到SharePoint的测试数据库中工作,但我似乎无法让它在我们的实际链接数据库中工作。以下是单击复选框时运行的测试数据库中的代码。请注意,[Test]是我在此示例中定义的多值字段的名称。它是一个查找字段,从数据库中的另一个简单表中获取其可能的值。

Private Sub testcheck_Click()
    Dim counter As Integer
    Dim rst As DAO.Recordset

    Set rst = Me.Recordset

    If testcheck.Value = True Then
        With rst
            .MoveFirst
            .Edit
            For counter = 0 To Me.testcombo.ListCount - 1
                With !Test.Value
                    .AddNew
                    .Value = Val(Me.testcombo.Column(1, counter))
                    .Update
                End With
            Next counter
            .Update
        End With
    ElseIf testcheck.Value = False Then
        Me.testcombo.Value = Array()
    End If

End Sub

Snapshot of my test form

当我尝试在我的实际数据库中运行上面的代码时,它会在到达.MoveFirst命令时抛出错误。错误是运行时错误3426:“此操作已被关联对象取消”。我很有信心它仍然认为我正在尝试移动到另一个记录,同时仍然编辑当前记录(即使只有一个)。从这里开始,我发现当在测试数据库中运行代码时,表单左上角的那个小铅笔图标(我假设你正在编辑记录)被黑色三角形替换掉了进入.MoveFirst命令。这在我的实际数据库中不会发生。我不知道为什么会出现差异,我也不完全明白这意味着什么。如果有人知道如何解决这个问题,我将非常感谢您的意见。

我应该注意,只有表单已经创建了要编辑的记录,我的代码才有效。我有一个解决方法,但切线超出了这个问题的范围。

1 个答案:

答案 0 :(得分:0)

试试这个。 (我最初曾说要检查EOF,但经过进一步检查后,看起来你有一个EDIT,紧接着是一个ADD,即编辑没有做任何事情,因为你正在添加记录)。我之前从未使用过me.recordset,因为我总是明确地定义它 - 必须在下次尝试抓取底层表单源。 THX。

Private Sub testcheck_Click()
    Dim counter As Integer
    Dim rst As DAO.Recordset
Set rst = Me.Recordset

If testcheck.Value = True Then
    With rst
        For counter = 0 To Me.testcombo.ListCount - 1
            .AddNew
            !Test = Val(Me.testcombo.Column(1, counter))
            .Update
         Next counter
    End With
ElseIf testcheck.Value = False Then
    Me.testcombo.Value = Array()
End If

End Sub