n-hanz Ответов: 1

Как импортировать csv в ms-access без установки столбцов таблицы?


Мне уже удавалось импортировать csv-файл в таблицу ms access, но это было сделано путем предварительного указания столбцов таблицы в соответствии с csv. Я планирую заняться большим csv - файлом и задавался вопросом, Можно ли ввести столбцы таблицы программно.

Private Sub Import_Click()
'import excel file

'delete current table data
 With CurrentDb
 CurrentDb.Execute "DeleteTableData"
End With

'import
Dim f As Variant
Set f = Application.FileDialog(3)
'set dialog title
With f
.Title = "Choose File"
f.AllowMultiSelect = False

'Use the Show method to display the File Picker dialog box and return the 
user's action.
'The user pressed the action button.
If .Show = -1 Then
For Each f In .SelectedItems


'import into table
DoCmd.TransferText acImportDelim, , "[Table1]", f, True
Next f
MsgBox "File Imported"
Else
'Show if Canceled is selected in a message box
f = "No File Selected to Import."
MsgBox f
End If

End With
DoCmd.SetWarnings True
DoCmd.Hourglass False

End Sub


Что я уже пробовал:

Мне интересно, нужно ли мне сначала прочитать первую строку, а затем установить ее в качестве столбца таблицы или, может быть, что-то в этом роде, но я не совсем уверен, как это сделать. Пользователь может выбрать любой csv-файл, который он хочет, и onclick it импортирует его и введет данные в таблицу.

1 Ответов

Рейтинг:
9

Maciej Los

Цитата:
Я планирую заняться большим csv - файлом и задавался вопросом, Можно ли ввести столбцы таблицы программно.
...
Мне интересно, нужно ли мне сначала прочитать первую строку, а затем установить ее в качестве столбца таблицы или, может быть, что-то в этом роде, но я не совсем уверен, как это сделать.


Это зависит от содержимого csv и HasFieldNames параметр для Метод docmd.Метод TransferText (Доступ)[^].

Как гласит официальная документация:
Цитата:
Воспользуйся True (1) использование первой строки текстового файла в качестве имен полей при импорте, экспорте или связывании. Воспользуйся False (0) чтобы обработать первую строку текстового файла как обычные данные. Если оставить этот аргумент пустым, то по умолчанию ( False ) предполагается. Этот аргумент игнорируется для файлов данных слияния почты Microsoft Word, которые всегда должны содержать имена полей в первой строке.


Согласно моему опыту, если вы установите HasFieldNames параметр to False, имена столбцов добавляются автоматически, и они начинаются с: F1, F2, F3,..., прием.

Вывод: вы должны проверить (и опционально спросить пользователя), является ли первая строка строкой заголовка, а затем в зависимости от нее пройти True/False к HasFieldNames аргумент.


n-hanz

это делает то, что я хочу, спасибо за помощь.

Maciej Los

Всегда пожалуйста.