3001: неверный аргумент - PullRequest
       39

3001: неверный аргумент

0 голосов
/ 06 сентября 2018

На рисунке показана действительная ошибка. Я использую следующий код для создания контрольного журнала в MS-доступе с использованием сценария vba, но получаю 3001: ошибка недопустимого аргумента. Я уже проверил имена полей имен таблиц и т. Д., Но не смог решить проблему. Может кто-нибудь помочь, пожалуйста?

Я попытался найти аргумент 3001: неверный, но не могу точно определить, что является причиной проблемы в моем сценарии.

Буду очень признателен, если кто-нибудь сможет мне помочь с этим.

Public Function AuditChanges(RecordID As String, UserAction As String)
On Error GoTo auditerr

Dim DB As Database
Dim rst As Recordset
Dim clt As Control
Dim UserLogin As String

Set DB = CurrentDb
Set rst = DB.OpenRecordset("select * from audit", adOpenDynamic)

UserLogin = Environ("UserName")
Select Case UserAction
    Case "new"
        With rst
            .AddNew
            ![DateTime] = Now()
            !UserName = UserLogin
            !FormName = ScreenActiveForm.Name
            !Action = UserAction
            !RecordID = Screen.ActiveForm.Controls(RecordID).Value
            .Update

         End With

    Case "Delete"
        With rst
            .AddNew
            ![DateTime] = Now()
            !UserName = UserLogin
            !FormName = ScreenActiveForm.Name
            !Action = UserAction
            !RecordID = Screen.ActiveForm.Controls(RecordID).Value
            .Update

        End With

    Case "Edit"
        For Each clt In Screen.ActiveForm.Controls
            If (clt.ControlType = acTextBox _
                Or clt.ControlType = acComboBox) Then
                If Nz(clt.Value) <> Nz(clt.OldValue) Then
                With rst
                    .AddNew
                    ![DateTime] = Now()
                    !UserName = UserLogin
                    !FormName = ScreenActiveForm.Name
                    !Action = UserAction
                    !RecordID = Screen.ActiveForm.Controls(RecordID).Value
                    !FieldName = clt.ControlSource
                    !OldValue = clt.OldValue
                    !newvalue = clt.Value
                    .Update
                End With
            End If
        End If

    Next clt

End Select

rst.Close
DB.Close
Set rst = Nothing
Set DB = Nothing
auditerr:
MsgBox Err.Number & " : " & Err.Description, vbCritical, "Error"
Exit Function

End Function  

Спасибо, Рито

1 Ответ

0 голосов
/ 06 сентября 2018

Попробуйте это

Set rst = DB.OpenRecordset("select * from audit", dbOpenDynaset)

...