使用Access作为后端时,ADODB Recordset无法编辑,适用于SQL Server

时间:2016-06-13 19:25:21

标签: sql-server vba ms-access access-vba

我有一个简单的MS Access 2013表单,其中包含一些文本框,每个文本框的控制源都设置为ADODB记录集中的字段。记录集可以来自当前accdb项目中的表,也可以来自SQL Server存储过程的结果;这是通过选择表单上的单选按钮来设置的。

我已经确认两个记录集中的每一个都可以在vba代码中更新,但是当我使用该表单时,它只允许我编辑从SQL Server选项返回的字段; Access选项显示记录,但在我尝试编辑时,文本框就像锁定一样。

这是我正在使用的代码:

Private Sub cmdLoadData_Click()
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset

With rst
    .CursorLocation = adUseClient
    .CursorType = adOpenDynamic
    .LockType = adLockOptimistic
End With

Select Case BackendOptions
    Case 1
        ' Access
        With rst
            .ActiveConnection = CurrentProject.AccessConnection
            .Open "SELECT Id, FirstName, LastName, Birthday FROM tblADOTest"
        End With

    Case 2
        ' SQL Server
        Dim cn As New ADODB.Connection

        With cn
            .ConnectionString = "Driver={SQL Server Native Client 11.0};" & _
                "Server=<the server name>;" & _
                "Database=<the database name>;" & _
                "Trusted_Connection=yes;"

            .Open
        End With

        With rst
            .ActiveConnection = cn
            .Open "EXEC dbo.GetTestData"
        End With
End Select

Set Me.Recordset = rst
End Sub

存储过程运行与我用于Access的内联字符串相同的SQL。

有关如何使Access选项可编辑的任何想法?

0 个答案:

没有答案