Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Заливка текстового файла / 21 сообщений из 21, страница 1 из 1
01.12.2016, 09:52
    #39358214
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
День добрый.
Подскажите, как можно залить вот это:
...
Рейтинг: 0 / 0
01.12.2016, 10:07
    #39358230
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
Боюсь, без VBA тут не обойтись.
Создаете спецификацию импорта с фиксированной шириной, импортируете все, вместе с разделителями во временный файл и в цикле по строкам собираете перенесенные строки в двух последних колонках. Можно попробовать извратиться и без VBA, но навскидку запрос для сборки строк не напишу.
...
Рейтинг: 0 / 0
01.12.2016, 11:19
    #39358301
Заливка текстового файла
ИМХО, только с помощью VBA и лучше для этого использовать объект ADODB.Stream, т.к. он позволяет указать кодировку символов.
Указываете кодировку - открываете файл и читаете построчно. Строки, проверяете на наличие даты со 2-го символа (например Like "?##.##.####*"). Если есть - дерибаните строку на части и вносите запись в Recordset на таблице-получателе.
...
Рейтинг: 0 / 0
01.12.2016, 11:22
    #39358306
Заливка текстового файла
simply, это банковская выписка. Неужели в наше время банк не дает возможности экспортировать ее в какой-то формат, доступный для стандартного импорта?
...
Рейтинг: 0 / 0
01.12.2016, 11:49
    #39358330
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
Анатолий ( Киев ),
А зачем через стрим читать? В спецификации импорта проще указать положение колонок и можно указать кодировку. С таблицей проще работать, чем кодом разбирать текст.
...
Рейтинг: 0 / 0
01.12.2016, 15:14
    #39358541
Заливка текстового файла
MrShinА зачем через стрим читать? В спецификации импорта проще указать положение колонок и можно указать кодировку. С таблицей проще работать, чем кодом разбирать текст. В файле есть несколько строк заголовка, плюс строки с данными разделены линиями.
Можно, конечно, и импортом со спецификацией с фикс. столбцами и всеми полями текстового типа, но таблицу, которую вы получите, так же прийдется серьезно обрабатывать.
Если перед импортом вручную удалить всё лишнее и импортировать начисто. Но выписка, это каждый день и объем данных может быть не маленький. Хлопотно...
...
Рейтинг: 0 / 0
01.12.2016, 16:33
    #39358633
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
Поудалять программно шляпу и горизонтальные разделители, а остаток импортировать как DOS-текст с разделителем.
...
Рейтинг: 0 / 0
01.12.2016, 17:27
    #39358728
Заливка текстового файла
AkinaПоудалять программно шляпу и горизонтальные разделители, а остаток импортировать как DOS-текст с разделителем. Т.е. открыть файл - читать построчно - искать строки с данными - добавлять в другой файл, который потом импортировать?
Ну и чем это проще моего варианта? Разбить строку на части, заранее зная их размер - не проблема. Не нравится ADODB.Stream - можно через FSO или собственными средствами VBA, плюс функция перекодировки. Как бонус - легко проверяется, не дублируется ли выписка.
...
Рейтинг: 0 / 0
01.12.2016, 19:17
    #39358861
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
Анатолий ( Киев )чем это проще моего варианта?
Да собсно ничем, если не считать того, что импортированы будут сразу все записи, одной командой, а не по одной записи. И не надо ничего дробить на куски и собирать потом в строку запроса опять же. В общем, ручной работы меньше. По моим прикидкам, весь код будет состоять всего из 8 операторов.

Анатолий ( Киев )искать строки с данными
Если ориентироваться на скриншот, то есть устойчивый признак данных - второй символ цифра.
...
Рейтинг: 0 / 0
01.12.2016, 20:26
    #39358902
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
simply,

а никак этот кусок в нормальной кодировке сюда в txt файл не выложить ? Или в ненормальной хотя бы...
а то тут уже множество прожектов предложено, а могли бы быть и готовые решения...
я бы вообще рубанул первые 13 строк и пристегнул этот файл как таблицу к базе (без заголовков строк) ,
потом каждый следующий файл для импорта кидал на место первого без первых 13 строк с заменой и всё...
Не гоню... смотри картинку...

Единственное чтоб прилинковать файл, нужно сначала сделать идеально правильным его макет - оставить только 2-3 информационных строки, причем однострочных типа:
i 30.12.2017 i 12345 i привет i
i 30.12.2016 i 12344 i привет2 i
ну и указать правильно нужный разделитель в строке...

То, что потом получается в таблице легко переваривается запросами...
...
Рейтинг: 0 / 0
01.12.2016, 20:59
    #39358920
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
Анатолий ( Киев )simply, это банковская выписка. Неужели в наше время банк не дает возможности экспортировать ее в какой-то формат, доступный для стандартного импорта?
Увы, имеем то, что имеем.

vmagsimply,
а никак этот кусок в нормальной кодировке сюда в txt файл не выложить ? Или в ненормальной хотя бы...
а то тут уже множество прожектов предложено, а могли бы быть и готовые решения...
...
Виноват, что сразу не выложил файл. Завтра с работы выложу. Спасибо
...
Рейтинг: 0 / 0
01.12.2016, 21:07
    #39358922
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
simplyВиноват, что сразу не выложил файл. Завтра с работы выложу. Спасибо

можете сами попробовать, думаю и выкладывать не нужно будет...
- удалить первые 13 строк, оставить пару информационных однострочных и сохранить
- связь с таблицами, выбрать формат файлы txt,
- в диалоге выбрать кодировку, разделитель, настроить типы полей (чтоб не париться можно выбрать везде текст)
- связать и проверить на открытие таблицу в базе.
После этого можно вместо этого файла подставлять реальные без первых 13 строк и по идее всё...
...
Рейтинг: 0 / 0
02.12.2016, 03:31
    #39359037
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
Анатолий ( Киев )ИМХО, только с помощью VBA и лучше для этого использовать объект ADODB.Stream, т.к. он позволяет указать кодировку символов.
Указываете кодировку - открываете файл и читаете построчно. Строки, проверяете на наличие даты со 2-го символа (например Like "?##.##.####*"). Если есть - дерибаните строку на части и вносите запись в Recordset на таблице-получателе.

Попробую разобраться с ADODB.Stream, раньше не сталкивался.........
Тут еще дополнительная задачка. В таблице, в двух последних столбцах, значения поля "размазалось" по строкам и нужно будет это дело собрать воедино.
Вот выкладываю файл
...
Рейтинг: 0 / 0
02.12.2016, 07:06
    #39359045
LocksmithPC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
задача на 10 минут. чо за проблема вообще?
...
Рейтинг: 0 / 0
02.12.2016, 09:13
    #39359084
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
LocksmithPCзадача на 10 минут. чо за проблема вообще?
Предложите, свой работающий вариант. Это пойдет на пользу мне и многим как пример.
...
Рейтинг: 0 / 0
02.12.2016, 09:19
    #39359089
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
vmagsimply,
Единственное чтоб прилинковать файл, нужно сначала сделать идеально правильным его макет - оставить только 2-3 информационных строки, причем однострочных типа:
i 30.12.2017 i 12345 i привет i
i 30.12.2016 i 12344 i привет2 i
ну и указать правильно нужный разделитель в строке...

То, что потом получается в таблице легко переваривается запросами...

Сделал таким способом, вроде получилось, но не хотелось бы держать постоянно связь с файлом в базе. При необходимости создавать и сразу же удалять. Теперь вопрос как это реализовать по событию.
...
Рейтинг: 0 / 0
02.12.2016, 09:54
    #39359116
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
Ровно 2 строки кода. В описании спецификации я только 3 поля выделил, принцип, думаю, понятен. То, что грузится в таблицу разобрать запросами или просто в цикле будет просто.

Имя файла только сделайте без русских букв и пробелов, у меня ошибка вылезала, не стал разбираться.
...
Рейтинг: 0 / 0
02.12.2016, 10:05
    #39359121
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
simply,

Постоянной связи нет - в база просто ссылка на файл (при этом файл можно менять, удалять, корректировать).
Файл блокируется только при открытии таблицы или запроса на эту таблицу.
На счет события это слишком общий вопрос, чтобы дать конкретный ответ.
Вам нужно:
1. Проверить как открывается теперь оригинальный файл (без удаления 13 строк), возможно настройки смогут переварить эти 13 строк в 13 строк мусора таблицы (тогда отпадет проблема с изменением оригинала файла)
2. Если пункт 1 не прокатил - то нужно решить проблему с программным выбросом первых 13 строк из файла
оригинала (если руками это делать не охота).
3. Далее сделать механизм выборки и заливки содержимого прилинкованной таблицы в нужную вам таблицу.
4. Вопрос про событие вообще непонятен - ну сделайте на форме кнопку "Импорт", при нажатии получите соответствующее событие, куда и пишите:
- выбор и копирование (возможно с обрезкой) файла импорта в место привязки файла шаблона
- выполнение пункта 3
...
Рейтинг: 0 / 0
02.12.2016, 10:06
    #39359122
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
Спасибо. Делал точно так же, но таблица была пустой. Видимо сделал ошибку в имени спецификации.
...
Рейтинг: 0 / 0
02.12.2016, 10:45
    #39359152
LocksmithPC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
simplyLocksmithPCзадача на 10 минут. чо за проблема вообще?
Предложите, свой работающий вариант. Это пойдет на пользу мне и многим как пример.

Не предложу, VBA не разумею. На обжэктпацкале только могу.
...
Рейтинг: 0 / 0
02.12.2016, 10:56
    #39359160
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заливка текстового файла
simply,

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


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