Импорт бинарного файла в таблицу

M.B.
Дата: 05.03.2008 14:44:16
A2003

В VBA еще тока начинающий, но в Access другими методами не сделать. Отсюда вопрос.
Как трансклютировать файл в таблицу?
Имеются файлы (не текстовые), длинна строки постоянная 26 байт. Размер более 400 Кб
Имеется таблица (например Т1 ) в ней 26 полей с именами от 1 до 26 (тип данных - текстовый).
Требуется, импортировав записи в таблицу, в полях отображалось значение байта (например DF).

По поиску в основном примеры для чтения/записи текстовых файлов.
Анатолий ( Киев )
Дата: 05.03.2008 16:12:39
M.B.
Имеются файлы (не текстовые), длинна строки постоянная 26 байт.
В текстовом файле строки разделены спецсимволами.
Если ваш файл "не текстовый", то что понимается под фразой "длинна строки"? Размер блока?
Dim a(1 To 26) As Byte, i As Integer

    Open "C:\Test.txt" For Binary As #1
 Do Until EOF(1)
    Get #1, , a
  For i = 1 To 26
    Debug.Print i; Tab; Hex(a(i))
  Next
 Loop
    Close #1
Здесь результаты выводятся в окне отладки. В реальной процедуре можно открыть Recordset и добавить запись туда, используя значение в переменной "i" как имя(часть имени) или индекс поля.
M.B.
Дата: 05.03.2008 18:54:57
Анатолий ( Киев )

Если ваш файл "не текстовый", то что понимается под фразой "длинна строки"? Размер блока?


Да блок.

Recordsetом никогда не пользовался, а как его применить в этом случае, а то ничего неполучается. Хотя-бы записи выводить в табл. в одно поле.
Анатолий ( Киев )
Дата: 05.03.2008 19:25:31
Dim a(0 To 25) As Byte, i As Integer
Dim rs As New ADODB.Recordset

rs.Open "Имя таблицы", CurrentProject.Connection, adOpenKeyset, adLockOptimistic


Open "T:\Test.txt" For Binary As #1
Do Until EOF(1)
Get #1, , a
rs.AddNew
For i = 0 To 25
rs.Fields(i) = a(i)
Next
Loop
rs.UpdateBatch
rs.Close


Close #1
Анатолий ( Киев )
Дата: 05.03.2008 19:45:09
Поправочка:
rs.Fields(i) = Hex(a(i))
M.B.
Дата: 05.03.2008 19:55:45
Анатолий, огромное спасибо! Всё работает Ok!

Будем дальше извращаться.
M.B.
Дата: 06.03.2008 23:42:47
Еще маленький нюанс.

А можно здесь же установить формат вывода в таблицу, если один знак, то ноль впереди.

Или добивать запросом на изменение, но кажется что будет дольше работать.
mds_world
Дата: 07.03.2008 07:06:48
M.B.
А можно здесь же установить формат вывода в таблицу, если один знак, то ноль впереди.
В таблице необязательно что-либо менять. При выводе, в форму, в отчет, устанавливайте нужный формат вывода.
Анатолий ( Киев )
Дата: 07.03.2008 13:02:17
rs.Fields(i) = IIF(a(i) < 16, "0", "") & Hex(a(i))