如何解决这条线上的 MS Access VBA 模块错误“无效参数”?
我正在尝试为访问数据库创建审核日志,但现在代码似乎在此处崩溃并出现错误 3001:
代码:
Set rst = DB.OpenRecordset("SELECT * from tbl_AuditLog",adOpenDynamic)
这是完整的模块代码:
Option Compare Database
Public Function AuditLog(RecordID As String,UserAction As String)
On Error GoTo AuditErr
Dim DB As Database
Dim rst As Recordset
Dim ctl As Control
Dim UserLogin As String
Set DB = CurrentDb
Set rst = DB.OpenRecordset("SELECT * from tbl_AuditLog",adOpenDynamic)
UserLogin = Environ("Username")
Select Case UserAction
Case "New"
With rst
.AddNew
![EditDate] = Now()
![User] = UserLogin
!FormName = Screen.ActiveForm.Name
!Action = UserAction
!RecordID = Screen.ActiveForm.Controls(RecordID)
.Update
End With
Case "Delete"
With rst
.AddNew
![EditDate] = Now()
![User] = UserLogin
!FormName = Screen.ActiveForm.Name
!Action = UserAction
!RecordID = Screen.ActiveForm.Controls(RecordID)
.Update
End With
Case "Edit"
For Each ctl In Screen.ActiveForm.Controls
If (ctl.controltpe = acTextBox _
Or ctl.ControlType = acComboBox) Then
If Nz(ctl.Value) <> Nz(ctl.OldValue) Then
With rst
.AddNew
![EditDate] = Now()
![User] = UserLogin
!FormName = Screen.ActiveForm.Name
!Action = UserAction
!RecordID = Screen.ActiveForm.Controls(RecordID)
!FieldName = ctl.ControlSource
!OldValue = ctl.OldValue
!NewValue = ctl.Value
.Update
End With
End If
End If
Next ctl
End Select
rst.Close
DB.Close
Set rst = nothing
Set DB = nothing
AuditErr:
MsgBox Err.Number & " : " & " Unable to create audit log " & Err.Description
Exit Function
End Function
信息来自表单,并通过此代码在beforeupdate中:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.NewRecord Then
Call AuditLog("Employee ID","New")
Else
Call AuditLog("Employee ID","Edit")
End If
End Sub
现在,我对 VBA 完全陌生,所以如果有人能告诉我我厌烦了什么,或将我链接到指南,我将不胜感激。
解决方法
adOpenDynamic 不是 DAO OpenRecordset 方法的有效参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。