2016-10-20 4 views
-1

Мне было интересно, можно ли создать таблицу базы данных Access из текстового файла. Например, текстовый файл, например:Создание таблицы доступа из текстового файла

#Tom 
Age:12 
Info: Tall 
#Alice 
Age: 20 
Info: Nice 

должны быть преобразованы в таблицу с 3 параметрами (имя, возраст и данные), содержащие информацию Тома и Алисы. Другой пример будет текстовый файл:

Tim 
------- 
A tall 12 years old. 
Good In basketball 

Jak 
------- 
A short 30 years old guy. 
Bad at sports 
Bald 

Который должен быть преобразован в таблицу, содержащую 2-параметры возраст и данные. Если требуется кодирование, я бы предпочел использовать C#, хотя Java также является опцией.

Заранее спасибо: D

+0

Самый короткий ответ на все вопросы «возможно»: ДА! –

+0

Хорошо, как мне это сделать? Большая проблема заключается в том, что когда я получаю файлы с двумя столбцами входов, например, на картинке (например, заголовок имени, затем под ним, в правой колонке есть возраст и профиль, а в левой колонке высота и вес) –

ответ

0

После поиска далеко и широко, я нашел решение. Я загрузил текст в строку в C#, чем построил таблицу excel с использованием API Microsoft. После того, как вы получили таблицу Excel, конвертирующую ее для доступа, довольно просто, используя Access 'built-in functionaily

0

Возможно, это скорее облегчит это в VBA - и вам не нужно писать какой-то грязный C# (однако, если вы на самом деле familer с C#, то любой compentent coder может EASY читать некоторые VBA и просто набирать строку C# для строки - если вы на самом деле familer с C#.

Итак, VBA импортирует первый текстовый файл и выписывает данные к таблице будет выглядеть так:

Sub Import1() 

    Dim intfileH As Integer 
    Dim strBuf  As String 
    Dim rst  As DAO.Recordset 
    Dim strRec, vBuf, strRecDetail 

    intfileH = FreeFile() 
    Open "c:\test\text1.txt" For Input As #intfileH 
    strBuf = Input(LOF(intfileH), #intfileH) 
    Set rst = CurrentDb.OpenRecordset("tblNames") 

    vBuf = Split(strBuf, "#") 
    For Each strRec In vBuf 
    If strRec <> "" Then 
     strRecDetail = Split(strRec, vbCrLf) 
     With rst 
      .AddNew 
      !MyName = strRecDetail(0) 
      !age = Split(strRecDetail(1), ":")(1) 
      !Info = Split(strRecDetail(2), ":")(1) 
      .Update 
     End With 
    End If 
    Next 

    rst.Close 
    Close (intfileH) 

End Sub 

И для вторых данных, почти то же самое, это будет работать:

Sub Import2() 

    Dim intfileH As Integer 
    Dim strBuf  As String 
    Dim rst  As DAO.Recordset 
    Dim vBuf, strRec 
    Dim i   As Integer 

    intfileH = FreeFile() 
    Open "c:\test\text2.txt" For Input As #intfileH 
    strBuf = Input(LOF(intfileH), #intfileH) 
    Set rst = CurrentDb.OpenRecordset("tblNames") 

    vBuf = Split(strBuf, vbCrLf) 
    For i = 0 To UBound(vBuf) 
    If vBuf(i) <> "" Then 

     With rst 
      .AddNew 
      !MyName = vBuf(i) 
      i = i + 2 
      !age = Split(vBuf(i), " ")(2) 
      i = i + 1 
      !Info = vBuf(i) 
      .Update 
     End With 
    End If 
    i = i + 1 
    Next 

    rst.Close 
    Close (intfileH) 

End Sub 
Смежные вопросы