ЛЮДИ !!! Как импортировать текстовый файл в Access

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.05.2004 (Пт) 14:30

Если я все правильно помню, есть такая штука как DoCmd.TransferDatabase

Какие у нее параметры - это см. хелпник.

3ton
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 07.05.2004 (Пт) 10:56
Откуда: Kaliningrad

Re: ЛЮДИ !!! Как импортировать текстовый файл в Access

Сообщение 3ton » 08.05.2004 (Сб) 14:44

Rafael писал(а):Имеется текстовый файл с разделителями (таб)
Поскажите как его импортировать в Access программно на VB


Вот чего я выдрал из MSDN:
Код: Выделить всё
   ...
   Open "Customers.txt" For Input As #1

   Do Until EOF(1)
      Line Input #1, strRow
      With rsCustomers
         .AddNew
         For Each fld In .Fields
            ' If a tab delimiter is found, field text is to the
            ' left of the delimiter.
            If InStr(strRow, Chr(9)) <> 0 Then
               ' Move position to tab delimiter.
               intPos = InStr(strRow, Chr(9))
               ' Assign field text to strField variable.
               strField = Left(strRow, intPos - 1)
            Else
               ' If a tab delimiter isn't found, field text is the
               ' last field in the row.
               strField = strRow
            End If

            ' Strip off quotation marks.
            If Left(strField, 1) = Chr(34) Then
               strField = Left(strField, Len(strField) - 1)
               strField = Right(strField, Len(strField) - 1)
            End If

            fld.Value = strField

            ' Strip off field value text from text row.
            strRow = Right(strRow, Len(strRow) - intPos)
            intPos = 0

         Next
         .Update
         .MoveFirst
      End With
   Loop
   Close


Думаю понятно.
Щас еще поищу через recordset, но чего-то не могу найти описания на Extend.Propert. на "Text", а так там по умолчанию идет параметр для Comma-delimited text
Жить - хорошо! А хорошо жить - еще лучше!!!
Удачи! Шурик.

3ton
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 07.05.2004 (Пт) 10:56
Откуда: Kaliningrad

Re: ЛЮДИ !!! Как импортировать текстовый файл в Access

Сообщение 3ton » 08.05.2004 (Сб) 15:43

3ton писал(а):Щас еще поищу через recordset


Код: Выделить всё
Set cnn = CreateObject("ADODB.Connection")
   Set rs = CreateObject("ADODB.Recordset")
   cnn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;" & _
        "Extended Properties='Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
        "DriverId=27;Extensions=txt,csv,tab,asc;FIL=text;" & _
        "MaxBufferSize=2048;PageTimeout=5" & _
        "DefaultDir=" & App.Path & "\;" & _
        "Data Source = " & App.Path & "\rsTxt.txt'"
   cnn.CursorLocation = adUseClient
   cnn.Open
   rs.Open "select * from " & App.Path & "\rsTxt.txt", cnn
    Do While Not rs.EOF
      Debug.Print rs!F1.Value & vbTab & rs!F2.Value & vbTab & rs!F3.Value
      rs.MoveNext
    Loop
:D

Содержание выйла такое:
Код: Выделить всё
1   wqмитмитrwerwer   123.34
2   5675656erwer   22.34
3   sdfsdfsdfrwerwer   3.34
4   3345345erwer   32.34
5   sdfsdfsdf   13.34
6   sfsdfsdfsd   12223.34
Жить - хорошо! А хорошо жить - еще лучше!!!
Удачи! Шурик.

3ton
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 07.05.2004 (Пт) 10:56
Откуда: Kaliningrad

Re: Еще один вопрос

Сообщение 3ton » 12.05.2004 (Ср) 11:23

Rafael писал(а):F1, F2, F3 - откуда и чем их обьявлять

F1 ... Fn
Стандартные наименование полей aka (F)ields (если их не определяешь.
Проще так:
1. Создаешь пустой файл test.udl
2. Кликаешь его (появиться диалог - свойства связи с данными)
3. На поставщике выбираешь OLEDB для ODBC
4. В подключении - источник - строка - сборка ...
5. Создаешь новый DSN
6. Выбираешь текстовый драйвер. Сохраняешь.
7. Снимаешь галку использовать текущий каталог.
8. Кликаешь в параметры, ... дальше определить формат

Ну а там разберешься :D


Ежели пишу:
Set DataGrid1.DataSource = rs , то данные импортируются в один столбец

Забавный случай :? , т.к. в моем тестовом примере у меня работает
(ИМХО что-то сос структурой файла, либо с драйвером)
В любом случае, попробуй отследить объект rs в отладчике и посмотреть чего в нем творится.
Жить - хорошо! А хорошо жить - еще лучше!!!
Удачи! Шурик.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList