Обновить таблицу с помощью переменной - PullRequest
0 голосов
/ 27 апреля 2020

Я довольно новичок в использовании VBA. У меня есть база данных доступа, где пользователь нажимает кнопку, и это будет загружать несколько файлов.

Загруженные файлы являются временными таблицами и к ним добавляются поля и т. Д. c. После обновления временных таблиц записи переносятся в постоянную таблицу.

Он загружает сразу несколько файлов, поэтому по мере загрузки файлов в таблицу они вводятся в таблицы с именем 'temp_filename', с каждый файл получает свою собственную таблицу.

Ниже мой код. Для оператора alter table я хочу загрузить временную таблицу, которая была только что создана. Поскольку эта таблица будет называться как-то по-разному каждый раз, когда я пытался присвоить ее переменной. Я попробовал другой синтаксис et c, однако я получаю ошибки. Кто-нибудь может увидеть, где я иду не так? Любая помощь будет оценена.

Public Sub Import()

Dim oFileDiag As Office.FileDialog
Dim path As String: path = ""
Dim oFSO As New FileSystemObject
Dim FileSelected As Variant
Dim FileNameSelected As Variant
Dim UpdatedTableName As Variant

Set oFileDiag = Application.FileDialog(msoFileDialogFilePicker) ''Picks file to import
oFileDiag.AllowMultiSelect = True ''Allows multiple files to be selected
oFileDiag.Title = "Please select the reports to upload"
oFileDiag.Filters.Clear
oFileDiag.Filters.Add "Excel Spreadsheets", "*.xlsx, *.xls" ''Only allows xlsx and xls file types to upload

If oFileDiag.Show Then
    For Each FileSelected In oFileDiag.SelectedItems

        FileNameSelected = oFSO.GetFileName(FileSelected)
        UpdatedTableName = "temp_" & FileNameSelected

        If oFileDiag.SelectedItems.Count > 0 Then path = oFileDiag.SelectedItems(1)
            If Len(path) > 0 Then
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, UpdatedTableName, path, 1

            DoCmd.RunSQL "ALTER TABLE UpdatedTableName ADD COLUMN [Date_of_Report] TEXT(100);"

            MsgBox "The " & FileNameSelected & " file has been uploaded"

        Else
            MsgBox "File not found"
        End If
    Next
End If

1 Ответ

1 голос
/ 27 апреля 2020

Вам необходимо объединить имя таблицы в строку SQL:

    DoCmd.RunSQL "ALTER TABLE [" & UpdatedTableName & "] ADD COLUMN [Date_of_Report] TEXT(100);"

Я использовал квадратные скобки на случай, если в имени таблицы есть такие вещи, как пробелы.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...