我有一个简单的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选项可编辑的任何想法?