Access转ODBC后端加dbSeeChanges报Err3001无效参数怎么解决?
错误原因
OpenRecordset 方法的第二个参数是记录集类型常量,dbSeeChanges 属于选项参数,不能直接放在第二个参数位,所以会触发参数无效报错。
修复方案
只需要修改两处代码即可:
- 将
Dim rs As Recordset改为Dim rs As DAO.Recordset,显式指定使用DAO记录集,避免和ADO的Recordset对象产生引用冲突 - 将OpenRecordset的参数调整为先指定记录集类型
dbOpenDynaset,再追加dbSeeChanges参数,两个参数用+或者Or连接都可以
修改后的完整代码
Private Sub cmdLogin_Click() On Error GoTo cmdLogin_ClickErr If Len(Me.txtUserName) = 9 And Len(Me.txtPassword) = 1 Then TempVars.Add "UserName", "Developer" TempVars.Add "Password", "1" TempVars.Add "Admin", "-1" Else Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("Select * From TLKPeople Where Username = '" & Me.txtUserName & "' And Password = '" & Me.txtPassword & "'", dbOpenDynaset, dbSeeChanges) If Not rs.EOF Then TempVars.Add "UserName", rs!UserName.Value TempVars.Add "Password", rs!Password.Value TempVars.Add "Admin", rs!Admin.Value TempVars.Add "ReadOnly", rs!ReadOnly.Value TempVars.Add "StdUser", rs!STDUser.Value TempVars.Add "OpsUser", rs!OpsUser.Value Else MsgBox "Your login as failed!", vbOKOnly, "Login Failed" Exit Sub End If End If End Sub
补充:如果改完还有报错,检查你的VBA引用里是否已经勾选了「Microsoft DAO x.x Object Library」,操作路径是VBA编辑器→工具→引用,找到对应选项勾选即可。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

