|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
День добрый. Подскажите, как можно залить вот это: ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 09:52 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
Боюсь, без VBA тут не обойтись. Создаете спецификацию импорта с фиксированной шириной, импортируете все, вместе с разделителями во временный файл и в цикле по строкам собираете перенесенные строки в двух последних колонках. Можно попробовать извратиться и без VBA, но навскидку запрос для сборки строк не напишу. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 10:07 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
ИМХО, только с помощью VBA и лучше для этого использовать объект ADODB.Stream, т.к. он позволяет указать кодировку символов. Указываете кодировку - открываете файл и читаете построчно. Строки, проверяете на наличие даты со 2-го символа (например Like "?##.##.####*"). Если есть - дерибаните строку на части и вносите запись в Recordset на таблице-получателе. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 11:19 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
simply, это банковская выписка. Неужели в наше время банк не дает возможности экспортировать ее в какой-то формат, доступный для стандартного импорта? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 11:22 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
Анатолий ( Киев ), А зачем через стрим читать? В спецификации импорта проще указать положение колонок и можно указать кодировку. С таблицей проще работать, чем кодом разбирать текст. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 11:49 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
MrShinА зачем через стрим читать? В спецификации импорта проще указать положение колонок и можно указать кодировку. С таблицей проще работать, чем кодом разбирать текст. В файле есть несколько строк заголовка, плюс строки с данными разделены линиями. Можно, конечно, и импортом со спецификацией с фикс. столбцами и всеми полями текстового типа, но таблицу, которую вы получите, так же прийдется серьезно обрабатывать. Если перед импортом вручную удалить всё лишнее и импортировать начисто. Но выписка, это каждый день и объем данных может быть не маленький. Хлопотно... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 15:14 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
Поудалять программно шляпу и горизонтальные разделители, а остаток импортировать как DOS-текст с разделителем. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 16:33 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
AkinaПоудалять программно шляпу и горизонтальные разделители, а остаток импортировать как DOS-текст с разделителем. Т.е. открыть файл - читать построчно - искать строки с данными - добавлять в другой файл, который потом импортировать? Ну и чем это проще моего варианта? Разбить строку на части, заранее зная их размер - не проблема. Не нравится ADODB.Stream - можно через FSO или собственными средствами VBA, плюс функция перекодировки. Как бонус - легко проверяется, не дублируется ли выписка. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 17:27 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )чем это проще моего варианта? Да собсно ничем, если не считать того, что импортированы будут сразу все записи, одной командой, а не по одной записи. И не надо ничего дробить на куски и собирать потом в строку запроса опять же. В общем, ручной работы меньше. По моим прикидкам, весь код будет состоять всего из 8 операторов. Анатолий ( Киев )искать строки с данными Если ориентироваться на скриншот, то есть устойчивый признак данных - второй символ цифра. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 19:17 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
simply, а никак этот кусок в нормальной кодировке сюда в txt файл не выложить ? Или в ненормальной хотя бы... а то тут уже множество прожектов предложено, а могли бы быть и готовые решения... я бы вообще рубанул первые 13 строк и пристегнул этот файл как таблицу к базе (без заголовков строк) , потом каждый следующий файл для импорта кидал на место первого без первых 13 строк с заменой и всё... Не гоню... смотри картинку... Единственное чтоб прилинковать файл, нужно сначала сделать идеально правильным его макет - оставить только 2-3 информационных строки, причем однострочных типа: i 30.12.2017 i 12345 i привет i i 30.12.2016 i 12344 i привет2 i ну и указать правильно нужный разделитель в строке... То, что потом получается в таблице легко переваривается запросами... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 20:26 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )simply, это банковская выписка. Неужели в наше время банк не дает возможности экспортировать ее в какой-то формат, доступный для стандартного импорта? Увы, имеем то, что имеем. vmagsimply, а никак этот кусок в нормальной кодировке сюда в txt файл не выложить ? Или в ненормальной хотя бы... а то тут уже множество прожектов предложено, а могли бы быть и готовые решения... ... Виноват, что сразу не выложил файл. Завтра с работы выложу. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 20:59 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
simplyВиноват, что сразу не выложил файл. Завтра с работы выложу. Спасибо можете сами попробовать, думаю и выкладывать не нужно будет... - удалить первые 13 строк, оставить пару информационных однострочных и сохранить - связь с таблицами, выбрать формат файлы txt, - в диалоге выбрать кодировку, разделитель, настроить типы полей (чтоб не париться можно выбрать везде текст) - связать и проверить на открытие таблицу в базе. После этого можно вместо этого файла подставлять реальные без первых 13 строк и по идее всё... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2016, 21:07 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )ИМХО, только с помощью VBA и лучше для этого использовать объект ADODB.Stream, т.к. он позволяет указать кодировку символов. Указываете кодировку - открываете файл и читаете построчно. Строки, проверяете на наличие даты со 2-го символа (например Like "?##.##.####*"). Если есть - дерибаните строку на части и вносите запись в Recordset на таблице-получателе. Попробую разобраться с ADODB.Stream, раньше не сталкивался......... Тут еще дополнительная задачка. В таблице, в двух последних столбцах, значения поля "размазалось" по строкам и нужно будет это дело собрать воедино. Вот выкладываю файл ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2016, 03:31 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
задача на 10 минут. чо за проблема вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2016, 07:06 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
LocksmithPCзадача на 10 минут. чо за проблема вообще? Предложите, свой работающий вариант. Это пойдет на пользу мне и многим как пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2016, 09:13 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
vmagsimply, Единственное чтоб прилинковать файл, нужно сначала сделать идеально правильным его макет - оставить только 2-3 информационных строки, причем однострочных типа: i 30.12.2017 i 12345 i привет i i 30.12.2016 i 12344 i привет2 i ну и указать правильно нужный разделитель в строке... То, что потом получается в таблице легко переваривается запросами... Сделал таким способом, вроде получилось, но не хотелось бы держать постоянно связь с файлом в базе. При необходимости создавать и сразу же удалять. Теперь вопрос как это реализовать по событию. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2016, 09:19 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
Ровно 2 строки кода. В описании спецификации я только 3 поля выделил, принцип, думаю, понятен. То, что грузится в таблицу разобрать запросами или просто в цикле будет просто. Имя файла только сделайте без русских букв и пробелов, у меня ошибка вылезала, не стал разбираться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2016, 09:54 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
simply, Постоянной связи нет - в база просто ссылка на файл (при этом файл можно менять, удалять, корректировать). Файл блокируется только при открытии таблицы или запроса на эту таблицу. На счет события это слишком общий вопрос, чтобы дать конкретный ответ. Вам нужно: 1. Проверить как открывается теперь оригинальный файл (без удаления 13 строк), возможно настройки смогут переварить эти 13 строк в 13 строк мусора таблицы (тогда отпадет проблема с изменением оригинала файла) 2. Если пункт 1 не прокатил - то нужно решить проблему с программным выбросом первых 13 строк из файла оригинала (если руками это делать не охота). 3. Далее сделать механизм выборки и заливки содержимого прилинкованной таблицы в нужную вам таблицу. 4. Вопрос про событие вообще непонятен - ну сделайте на форме кнопку "Импорт", при нажатии получите соответствующее событие, куда и пишите: - выбор и копирование (возможно с обрезкой) файла импорта в место привязки файла шаблона - выполнение пункта 3 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2016, 10:05 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
Спасибо. Делал точно так же, но таблица была пустой. Видимо сделал ошибку в имени спецификации. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2016, 10:06 |
|
Заливка текстового файла
|
|||
---|---|---|---|
#18+
simplyLocksmithPCзадача на 10 минут. чо за проблема вообще? Предложите, свой работающий вариант. Это пойдет на пользу мне и многим как пример. Не предложу, VBA не разумею. На обжэктпацкале только могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2016, 10:45 |
|
|
start [/forum/topic.php?fid=45&msg=39358214&tid=1612916]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 389ms |
total: | 523ms |
0 / 0 |