Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт строки из внешней базы. / 13 сообщений из 13, страница 1 из 1
02.02.2016, 11:50
    #39160915
Quiet333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
Есть база mdb A2003.
из внешней базы получаю строку вида:

idпрошивки;ТипПЛИС;ПЛИС;Прошивка;ВерсияПрошивки;БМ;ВерсияБМ;СМ;ВерсияСМ;ИМ;ВерсияИМ;
147;adm;XC3S400;ADP101E1_v10_S400_ADM818x1M5;1.0;ADP101E1;1.0;пробная примечания;;;;
147;adm;XC3S400;ADP101E1_v10_S400_ADM818x1M5;1.0;ADP101E1;1.1;;;другое примечание;;
147;adm;XC3S400;ADP101E1_v10_S400_ADM818x1M5;1.0;ADP101E1;1.2;;;;;

разделители: точка с запятой и перевод строки. первая строка заголовки, но можно и без них. структура постоянная.
Нужно создать новую таблицу или закачать в существующую. Никогда такого не делал.
Куда копать? Может существуют стандартные варианты?
...
Рейтинг: 0 / 0
02.02.2016, 12:06
    #39160927
Exell
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
авторМожет существуют стандартные варианты?
Excel. Данные по столбцам
Поиск по слову парсинг
...
Рейтинг: 0 / 0
02.02.2016, 12:22
    #39160948
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
Quiet333,

idпрошивкиТипПЛИСПЛИСПрошивкаВерсияПрошивкиБМВерсияБМСМВерсияСМИМВерсияИМ147admXC3S400ADP101E1_v10_S400_ADM818x1M51.0ADP101E11.0пробная примечания 147admXC3S400ADP101E1_v10_S400_ADM818x1M51.0ADP101E11.1другое примечание 147admXC3S400ADP101E1_v10_S400_ADM818x1M51.0ADP101E11.2

вы или урезали строки или не все так просто
видимо это отчет с форматированием пробелами
...
Рейтинг: 0 / 0
02.02.2016, 12:33
    #39160964
Quiet333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
Exell,

Внешняя база не может формировать файлы excel. может сделать .csv
Но мне не хотелось бы делать обмен через промежуточные файлы.
...
Рейтинг: 0 / 0
02.02.2016, 12:36
    #39160967
Quiet333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
ПЕНСИОНЕРКАQuiet333,


вы или урезали строки или не все так просто
видимо это отчет с форматированием пробелами

да, это не вся строка. я даже пока не знаю какого максимального размера она может быть.
но форматирование идет через ; и перевод строки
...
Рейтинг: 0 / 0
02.02.2016, 13:48
    #39161047
Импорт строки из внешней базы.
Т.е. вы получаете строку в переменную? Не в виде файла?
Ну так и дерибаньте ее средствами VBA на составляющие и добавляйте запись Recordset, открытый на таблице.
Примерный алгоритм:
1. Функцией Split преобразовать текст в массив строк по разделителю строк (обычно vbCrLf);
2. Цикл по массиву строк;
3. Каждую строку функцией Split преобразовать в массив полей по разделителю ";";
4. В заранее открытом Recordset-е создать новую запись, где заполнить поля значениями из массива полей и сохранить запись.

ЗЫ. Стандартный импорт из csv был бы проще.
...
Рейтинг: 0 / 0
02.02.2016, 14:09
    #39161076
Quiet333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
Анатолий ( Киев )Т.е. вы получаете строку в переменную? Именно так Не в виде файла?
Ну так и дерибаньте ее средствами VBA на составляющие и добавляйте запись Recordset, открытый на таблице.
Примерный алгоритм:
1. Функцией Split преобразовать текст в массив строк по разделителю строк (обычно vbCrLf);
2. Цикл по массиву строк;
3. Каждую строку функцией Split преобразовать в массив полей по разделителю ";";
4. В заранее открытом Recordset-е создать новую запись, где заполнить поля значениями из массива полей и сохранить запись.
попробую. но наверное эта пара циклов будет жеваться долго. ЗЫ. Стандартный импорт из csv был бы проще. Это установить связь с файлом .csv ? и т.д.
...
Рейтинг: 0 / 0
02.02.2016, 15:33
    #39161156
Импорт строки из внешней базы.
Quiet333ЗЫ. Стандартный импорт из csv был бы проще. Это установить связь с файлом .csv ? и т.д.[/quot] Не обязательно связывать, можно сразу импортировать.
DoCmd.TransferText умеет "создать новую таблицу или закачать в существующую", причем ваш пример даже, возможно, без использования спецификации импорта.
Вы можете в одной процедуре сохранить полученный текст в файле - выполнить импорт - удалить файл.

Quiet333наверное эта пара циклов будет жеваться долго. Сами циклы - нет. Тормоз - большое (20-30 не в счет) количество поочередно добавляемых записей, но это можно ускорить использованием транзакции или ADODB.Recordset в режиме пакетного сохранения записей.
Хотя я такой подход использую для импорта из хитрых файлов типа логов. В вашем случае я бы применил 1-й вариант.
...
Рейтинг: 0 / 0
02.02.2016, 15:50
    #39161186
Quiet333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
Анатолий ( Киев ),
Спасибо. Пошел озадачивать. Пусть мне готовят файлы csv, а я буду их трансферить.
...
Рейтинг: 0 / 0
02.02.2016, 16:18
    #39161225
Quiet333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
Анатолий ( Киев ),

запускаю
DoCmd.TransferText , , "tbl1", "d:\AnWork\csv1.csv"

импорт проходит. но всю строку загоняет в первое поле таблицы.
Как указать, что разделитель ; ? из F1 не понял
...
Рейтинг: 0 / 0
03.02.2016, 11:46
    #39161751
Импорт строки из внешней базы.
Вообще-то для текстового драйвера символ ";" - разделитель полей по умолчанию. Странно, что не получается. Вы не указали вид операции, возможно причина в этом. Попробуйте:
DoCmd.TransferText acImportDelim, "", "tbl1", "d:\AnWork\csv1.csv"

Если не получится, то:
Вручную через "Внешние данные"-"Текстовый файл" выполните импорт. При этом вам будет предложено создать спецификацию импорта. Настройте ее и сохраните под каким-то именем.
Если результат получится правильным, то в дальнейшем выполняйте:
DoCmd.TransferText acImportDelim, "ИмяСпецификации", "tbl1", "d:\AnWork\csv1.csv"
...
Рейтинг: 0 / 0
03.02.2016, 13:28
    #39161934
Quiet333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
Анатолий ( Киев )Вообще-то для текстового драйвера символ ";" - разделитель полей по умолчанию. Странно, что не получается. Вы не указали вид операции, возможно причина в этом. Попробуйте:
DoCmd.TransferText acImportDelim, "", "tbl1", "d:\AnWork\csv1.csv"
Попробовал. Эффект тот же. Пробовал и с кавычками на месте спецификации, и без.
А у символа " ; " может быть несколько кодировок? Может в том что мне дали и accesse эти ";" разные вещи? хотя выглядят одинаково.
Если не получится, то:
Вручную через "Внешние данные"-"Текстовый файл" выполните импорт.
попробую позже... Попробовал. Все получилось.
При этом вам будет предложено создать спецификацию импорта.Настройте ее и сохраните под каким-то именем.
Эта спецификация будет храниться в базе или в недрах accessa ?
Если я переношу файл .mdb на другой компьютер работать будет? или нужно еще что-то переносить?Если результат получится правильным, то в дальнейшем выполняйте:
DoCmd.TransferText acImportDelim, "ИмяСпецификации", "tbl1", "d:\AnWork\csv1.csv"
...
Рейтинг: 0 / 0
03.02.2016, 14:23
    #39162006
Quiet333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт строки из внешней базы.
Опытным путем проверил, что спецификация хранится в самой базе. и при переносе все работает.

Анатолий ( Киев ), Спасибо. все работает.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт строки из внешней базы. / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]