Ожидаемый пользовательский тип, а не проект - PullRequest
1 голос
/ 30 октября 2019

Я просмотрел несколько страниц на SF об этой ошибке. Это первый раз, когда я пытался добавить записи в Access через VBA. Вот мой код:

Option Compare Database

Public Sub Retrieve_SOPS()
' Retrieve SOP files
    'Record starting timer - BEGIN
    Dim StartTime As Double
    StartTime = Timer

    'Set network folder path
    Const FolderPath As String = "\\JACKSONVILLE-DC\Common\SOP's for JV\SOPs Final"

    'Instantiate FSO
    Dim oFSO As Object
    Dim oFolder As Object
    Dim oFiles As Object
    Dim oFile As Object
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(FolderPath)
    Set oFiles = oFolder.Files

    'Instantiate DAO
    Dim db As DAO
    Dim rs As DAO.Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblSOP", dbOpenDynaset)

    Dim v As Variant

    'Loop through each file in FSO
    For Each oFile In oFiles
        'Remove temporary/hidden files
        If (oFile.Attributes And 2) <> 2 Then
            'Split filename
            v = Split(oFile.Name, "-")

            ' Instantiate Necessary Variables
            Dim file_path As String
            Dim file_id As Integer
            Dim file_title As String
            Dim lang_code As String
            Dim creation_date As String

            file_path = oFile.Path
            file_id = v(2)
            file_title = v(4)
            lang_code = v(5)
            'If dimension in array exists; Remove file extension
            If UBound(v) >= 6 Then
                creation_date = v(6)
            End If

            With rs
                .AddNew

                .Fields("file_path").Value = file_path
                .Fields("file_id").Value = file_id
                .Fields("file_title").Value = file_title
                .Fields("lang_code").Value = lang_code
                If UBound(v) >= 6 Then
                    .Fields("creation_date").Value = creation_date
                End If
            End With
        End If

        'Stop For Loop (TEMP)
        Exit Sub
    Next oFile
End Sub

Затем я получаю эту ошибку: «Ошибка компиляции: ожидаемый пользовательский тип, а не проект»

Я читаю «Библия Microsoft Access 2019»Wiley.

Я прочитал следующие ссылки, но все еще не могу понять, что я делаю неправильно:

  1. Ошибка компилятора: пользовательские типы не определены

  2. мс ошибка доступа при компиляции: пользовательский тип не определен

1 Ответ

1 голос
/ 30 октября 2019

А вы пропустили обновление:

       With rs
            .AddNew
            .Fields("file_path").Value = file_path
            .Fields("file_id").Value = file_id
            .Fields("file_title").Value = file_title
            .Fields("lang_code").Value = lang_code
            If UBound(v) >= 6 Then
                .Fields("creation_date").Value = creation_date
            End If
            .Update
       End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...