Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт текста / 11 сообщений из 11, страница 1 из 1
02.07.2020, 14:13
    #39975444
Bandjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
Добрый день,
Делаю импорт текста из txt файла:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
CurrentDb.Execute "Delete * FROM Сбербанк2020"
Set fd = FileDialog(1)
fd.InitialFileName = "O:\База\Абоненты\Платежи\"
fd.Filters.Add "text", "*.txt"
If fd.Show Then
    DoCmd.TransferText acImportDelim, , "Сбербанк2020", fd.SelectedItems(1)
End If



При импорте не обрабатываются в тексте двойные кавычки и запятые, доходит до них и текст обрезается.
При обычном ручном импорте все проходит нормально.
В чем может быть ошибка?
Спасибо
...
Рейтинг: 0 / 0
02.07.2020, 15:10
    #39975483
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
Bandjo,
Кавычки и запятые в VBA....
Попробуйте через буфер...
...
Рейтинг: 0 / 0
02.07.2020, 23:41
    #39975717
Bandjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
Да, понятно что напрямую VBA спотыкается, вопрос можно ли это поправить
Что значит попробовать через буфер?
...
Рейтинг: 0 / 0
03.07.2020, 00:03
    #39975721
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
Bandjo,
Буфер обмена.Скопировать и вставить
...
Рейтинг: 0 / 0
03.07.2020, 00:17
    #39975724
Bandjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
Руками? Боюсь, не понимаю.
Есть выписка банка, с кучей строк, что-то типа такого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
ПоказательОснования=
ПоказательПериода=
ПоказательНомера=
ПоказательДаты=
ПоказательТипа=
Очередность=5
НазначениеПлатежа=ОПЛАТА ЗА УСЛУГИ ПО СЧЕТУ 7975-КС+ ОТ 18.05.2020Г. НДС НЕ ОБЛАГАЕТСЯ
КонецДокумента
СекцияДокумент=Платежное поручение
Номер=28
Дата=01.06.2020
Сумма=3150
ПлательщикСчет=40802879560
ДатаСписано=
Плательщик=Индивидуальный предприниматель РУ
ПлательщикИНН=2311238
ПлательщикКПП=0
ПлательщикРасчСчет=40000079560
ПлательщикБанк1=КРАСНОДАРСКОЕ ОТДЕЛЕНИЕ N8619 ПАО СБЕРБАНК
ПлательщикБИК=0403402
ПлательщикКорсчет=301100000000602
ПолучательСчет=40702810031264
ДатаПоступило=01.06.2020
Получатель=ООО"Комп"
ПолучательИНН=231018
ПолучательКПП=2310001
ПолучательРасчСчет=4070230000031264
ПолучательБанк1=Филиал Публичного акционерного общества "Сбербанк России" Краснодарское отделение № 8619
ПолучательБИК=040349602
Все это нужно программно импортировать в таблицу, потому разбить по полям и тп.
DoCmd.TransferText все делает, но.. не все.
Как можно сделать нормально?
...
Рейтинг: 0 / 0
03.07.2020, 04:47
    #39975750
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
Bandjo
Все это нужно программно импортировать в таблицу, потому разбить по полям и тп.
читай построчно файл и раскладывай по таблице/ам

Bandjo
DoCmd.TransferText все делает, но.. не все.
Как можно сделать нормально?
примерно так...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
dim hFile as long
hFile=FreeFile
strFileName="SomeTextFileName"
Open strFileName for input access read as hFile'открываем файл
Do Until EOF(hFile) 'построчно читаем файл
'тут анализируем строку и раскладываем по полям значения
Loop
Close hFile'закрываем файл
...
Рейтинг: 0 / 0
03.07.2020, 11:23
    #39975835
Импорт текста
Bandjo
При импорте не обрабатываются в тексте двойные кавычки и запятые, доходит до них и текст обрезается.
При обычном ручном импорте все проходит нормально.
"При обычном ручном импорте" система предлагает вам настроить спецификацию, по которой затем выполняет импорт. В ней и сама система, и вы ручками вносите параметры, отличные от дефолтных (например "=" как разделитель полей и убрать кавычки, как обрамление текста).
Спецификацию можно сохранить и ее имя использовать позднее, в частности в DoCmd.TransferText. Вы этого не делаете и импорт выполняется по дефолтным правилам, а там:
1. Текстовое поле берется в кавычки, а кавычки внутри текста дублируются;
2. Десятичный разделитель и разделитель полей берутся из системных настроек.
Но, видимо, начиная с Win7 разделитель полей игнорируется и используется ",". И если десятичный разделитель тоже ",", то получается жопа. (Возможно уже и исправили - не проверял).
Ваш текст этим требованиям не соответствует, вот и результат.

Правильно вам подсказали - такой текст надо обрабатывать построчно, выковыривая значения и вставляя в нужные поля добавляемой записи в Recordset.
...
Рейтинг: 0 / 0
03.07.2020, 13:44
    #39975903
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
Bandjo, если это xml, то лучше импортировать как xml документ.
...
Рейтинг: 0 / 0
03.07.2020, 13:50
    #39975906
bubucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
alecko
Bandjo, если это xml, то лучше импортировать как xml документ.

это txt, разумный способ импорта уже озвучен выше
...
Рейтинг: 0 / 0
03.07.2020, 14:01
    #39975916
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
bubucha, походит на xml. вероятно читается в какой-то проге, которая ноды убирает, но обычно выписки в xml. и по формату выглядит так.
...
Рейтинг: 0 / 0
04.07.2020, 22:48
    #39976302
Bandjo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт текста
Панург, в который раз выручаете. Спасибо, все получилось.
Всем спасибо за участие.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт текста / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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