|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Есть база 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;;;;; разделители: точка с запятой и перевод строки. первая строка заголовки, но можно и без них. структура постоянная. Нужно создать новую таблицу или закачать в существующую. Никогда такого не делал. Куда копать? Может существуют стандартные варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 11:50 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
авторМожет существуют стандартные варианты? Excel. Данные по столбцам Поиск по слову парсинг ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 12:06 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Quiet333, idпрошивкиТипПЛИСПЛИСПрошивкаВерсияПрошивкиБМВерсияБМСМВерсияСМИМВерсияИМ147admXC3S400ADP101E1_v10_S400_ADM818x1M51.0ADP101E11.0пробная примечания 147admXC3S400ADP101E1_v10_S400_ADM818x1M51.0ADP101E11.1другое примечание 147admXC3S400ADP101E1_v10_S400_ADM818x1M51.0ADP101E11.2 вы или урезали строки или не все так просто видимо это отчет с форматированием пробелами ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 12:22 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Exell, Внешняя база не может формировать файлы excel. может сделать .csv Но мне не хотелось бы делать обмен через промежуточные файлы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 12:33 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКАQuiet333, вы или урезали строки или не все так просто видимо это отчет с форматированием пробелами да, это не вся строка. я даже пока не знаю какого максимального размера она может быть. но форматирование идет через ; и перевод строки ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 12:36 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Т.е. вы получаете строку в переменную? Не в виде файла? Ну так и дерибаньте ее средствами VBA на составляющие и добавляйте запись Recordset, открытый на таблице. Примерный алгоритм: 1. Функцией Split преобразовать текст в массив строк по разделителю строк (обычно vbCrLf); 2. Цикл по массиву строк; 3. Каждую строку функцией Split преобразовать в массив полей по разделителю ";"; 4. В заранее открытом Recordset-е создать новую запись, где заполнить поля значениями из массива полей и сохранить запись. ЗЫ. Стандартный импорт из csv был бы проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 13:48 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Т.е. вы получаете строку в переменную? Именно так Не в виде файла? Ну так и дерибаньте ее средствами VBA на составляющие и добавляйте запись Recordset, открытый на таблице. Примерный алгоритм: 1. Функцией Split преобразовать текст в массив строк по разделителю строк (обычно vbCrLf); 2. Цикл по массиву строк; 3. Каждую строку функцией Split преобразовать в массив полей по разделителю ";"; 4. В заранее открытом Recordset-е создать новую запись, где заполнить поля значениями из массива полей и сохранить запись. попробую. но наверное эта пара циклов будет жеваться долго. ЗЫ. Стандартный импорт из csv был бы проще. Это установить связь с файлом .csv ? и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 14:09 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Quiet333ЗЫ. Стандартный импорт из csv был бы проще. Это установить связь с файлом .csv ? и т.д.[/quot] Не обязательно связывать, можно сразу импортировать. DoCmd.TransferText умеет "создать новую таблицу или закачать в существующую", причем ваш пример даже, возможно, без использования спецификации импорта. Вы можете в одной процедуре сохранить полученный текст в файле - выполнить импорт - удалить файл. Quiet333наверное эта пара циклов будет жеваться долго. Сами циклы - нет. Тормоз - большое (20-30 не в счет) количество поочередно добавляемых записей, но это можно ускорить использованием транзакции или ADODB.Recordset в режиме пакетного сохранения записей. Хотя я такой подход использую для импорта из хитрых файлов типа логов. В вашем случае я бы применил 1-й вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 15:33 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), Спасибо. Пошел озадачивать. Пусть мне готовят файлы csv, а я буду их трансферить. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 15:50 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), запускаю DoCmd.TransferText , , "tbl1", "d:\AnWork\csv1.csv" импорт проходит. но всю строку загоняет в первое поле таблицы. Как указать, что разделитель ; ? из F1 не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 16:18 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Вообще-то для текстового драйвера символ ";" - разделитель полей по умолчанию. Странно, что не получается. Вы не указали вид операции, возможно причина в этом. Попробуйте: DoCmd.TransferText acImportDelim, "", "tbl1", "d:\AnWork\csv1.csv" Если не получится, то: Вручную через "Внешние данные"-"Текстовый файл" выполните импорт. При этом вам будет предложено создать спецификацию импорта. Настройте ее и сохраните под каким-то именем. Если результат получится правильным, то в дальнейшем выполняйте: DoCmd.TransferText acImportDelim, "ИмяСпецификации", "tbl1", "d:\AnWork\csv1.csv" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 11:46 |
|
Импорт строки из внешней базы.
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )Вообще-то для текстового драйвера символ ";" - разделитель полей по умолчанию. Странно, что не получается. Вы не указали вид операции, возможно причина в этом. Попробуйте: DoCmd.TransferText acImportDelim, "", "tbl1", "d:\AnWork\csv1.csv" Попробовал. Эффект тот же. Пробовал и с кавычками на месте спецификации, и без. А у символа " ; " может быть несколько кодировок? Может в том что мне дали и accesse эти ";" разные вещи? хотя выглядят одинаково. Если не получится, то: Вручную через "Внешние данные"-"Текстовый файл" выполните импорт. попробую позже... Попробовал. Все получилось. При этом вам будет предложено создать спецификацию импорта.Настройте ее и сохраните под каким-то именем. Эта спецификация будет храниться в базе или в недрах accessa ? Если я переношу файл .mdb на другой компьютер работать будет? или нужно еще что-то переносить?Если результат получится правильным, то в дальнейшем выполняйте: DoCmd.TransferText acImportDelim, "ИмяСпецификации", "tbl1", "d:\AnWork\csv1.csv" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 13:28 |
|
|
start [/forum/topic.php?fid=45&msg=39161934&tid=1613970]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 142ms |
0 / 0 |