2013-12-08 4 views
0

Позвольте мне сначала сказать, что я не программист, поэтому я не знаком с Visual Basic for Access (VBA). Я понимаю запросы и макросы до такой степени, что могу автоматизировать транзакции базы данных, которые могут получить меня от точки A t B.Импорт CSV с полями заметок в таблицы Microsoft Access

Я ищу, чтобы взять файл CSV, сохраненный из Microsoft Excel, и импортировать их в Microsoft Access 2003 ежедневно основа. CSV-файл - это ежедневный фид, который я получаю от другой компании.

Что может сделать не программист внутри Microsoft Access для импорта этих данных один раз в день?

Моя самая большая проблема с полями memo. Кажется, что многие из простых способов импорта данных, таких как связывание таблиц, обрезают поля memo в первые 255 символов. Мне нужно привести все данные.

Любые советы, предложения или протестированные процедуры были бы полезными.

+0

В Access, если вы задаете тип данных поля *** Text ***, то вы ограничены 255 символами. Вам нужно будет установить тип данных *** Memo ***, если вам нужно сохранить более 255 символов. Фактически для импорта CSV-файлов создаются проблемы для вас. Вместо этого вам лучше импортировать текстовый файл с разделителями табуляции. VBA - лучший и самый простой способ получить работу. – Linger

+0

Предполагая, что таблица уже создана с правильными типами данных, импорт данных по-прежнему усекает до 255 символов для полей memo. – Sun

ответ

1

Отъезд this может предоставить вам то, что вам нужно.

+0

Ваша ссылка только подтверждает привязку к листу Excel в Access, обрезает все поля memo до первых 255 символов. Это не отвечает на вопрос. – Sun

0

Вы можете попробовать что-то вроде этого кода ниже. Вставьте это в модуль и внесите необходимые изменения в соответствии с вашими потребностями. Создайте таблицу с полями, которые вам нужны, и их тип, и укажите его ниже. Создайте форму с помощью командной кнопки, которая будет запускать процедуру события. Вызовите созданный модуль.

Public Sub ImportTextFile() 
' to use the ADODB.Recordset, be sure you have a reference set to ADO 
Dim rst As ADODB.Recordset 
Dim strFile As String 
Dim strInput As String 
Dim varSplit As Variant 
Dim intCount As Integer 


    Set rst = New ADODB.Recordset 
' CHANGE THE TABLE NAME HERE 
rst.Open "TblNameHere", CurrentProject.Connection, adOpenDynamic, adLockOptimistic 
' CHANGE THE TEXT FILE NAME AND LOCATION HERE 
strFile = "C:\Desktop\fullextract.txt" 

Open strFile For Input As #1 

Dim i As Integer 

Do Until EOF(1) 
    ' This counter is just to get to the applicable line before importing 
    intCount = intCount + 1 
    ' reads the text file line by line 
    Line Input #1, strInput 
    ' starts importing on the second line. Change the number to match which line you 
    ' want to start importing from 
    If intCount >= 2 Then 
     ' creates a single dimension array using the split function 
     varSplit = Split(strInput, ",", , vbTextCompare) 
     ' adds the record 
     With rst 
      .AddNew 
     ' change the range 0 To 254 to fit your needs. I was importing 254 fields. 
      For i = 0 To 254 
       .Fields(i) = varSplit(i) 
      Next i 
      .Update 
     End With 

    End If 
Loop 
' garbage collection 
Close #1 
rst.Close 
Set rst = Nothing 

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