Мне нужно создать таблицу доступа (2007) из текстового файла. Я заранее знаю, какие столбцы должны существовать, но время от времени поставщики откатываются и отправляют текстовый файл, содержащий неправильное количество столбцов. Поэтому я не хочу указывать столбцы заранее. Я хочу загрузить все данные в виде текста в любые столбцы. Тогда я сделаю КК.Создать таблицу доступа из текстового файла
Столбцы разделены по трубопроводам, и в записи записано более 200 столбцов. Нет заголовков столбцов, но есть одна строка текста заголовка для файла, а одна строка в конце содержит количество записей. В текстовом файле может быть от 1 до более 5000 записей. Записи идентифицируются с помощью CRLF (окна).
Вот что у меня есть до сих пор, и он работает (в нем он читает файл и помещает правильную информацию в набор записей (столбцы и записи), и я могу подсчитать количество записей), за исключением того, что SELECT INTO дает мне ошибку:
Sub OpenTextADO(strFileName As String, strPath As String)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim recs As Integer
Dim strRecord As String
Dim strSQL As String
recs = 0
Set cn = New ADODB.Connection
If Right(strFileName, 3) = "txt" Then
'cn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};" & "DBQ=" & strPath & "\" 'need schema.ini file
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath & "\;Extended Properties='text;HDR=No;FMT=Delimited(|)'" 'need schema.ini file
End If
Set rs = New ADODB.Recordset
rs.Open "SELECT * INTO TESTTEXT FROM [" & strFileName & "]", cn, adOpenStatic, adLockOptimistic, adCmdText
'Do Until rs.EOF
' For Each fld In rs.Fields
' strRecord = strRecord & "|" & fld.Value
' Next fld
' strRecord = strRecord & vbCr
' recs = recs + 1
' rs.MoveNext
'Loop
'Debug.Print strRecord
'recs = rs.RecordCount
rs.Close
Set rs = Nothing
MsgBox "Text was opened and there are " & recs & " records in the table."
cn.Close
Set cn = Nothing
End Sub
ПРИМЕЧАНИЕ: Я включил как версию OLEDB и версию драйвера текста - они оба, кажется, работают одинаково. Я также создал Schema.ini файл, который выглядит следующим образом:
[test.txt]
Format=Delimited(|)
ColNameHeader=False
Оба водителя, кажется, нужно это desregard заголовки столбцов, несмотря на «HDR = No» в версии OLEDB.
Ошибка, которую я получаю: «Не удается обновить. База данных или объект доступны только для чтения».
Я ценю любую помощь.
Сколько это вы делаете? Как насчет использования мастера импорта? – John
Теперь я использую мастер импорта, но это становится непрактичным. Я начал получать, возможно, 5 или 6 из этих файлов в неделю, теперь я получаю 20-30 в неделю и, вероятно, получаю больше. – bassman592