powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт текста
11 сообщений из 11, страница 1 из 1
Импорт текста
    #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
Импорт текста
    #39975483
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bandjo,
Кавычки и запятые в VBA....
Попробуйте через буфер...
...
Рейтинг: 0 / 0
Импорт текста
    #39975717
Bandjo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, понятно что напрямую VBA спотыкается, вопрос можно ли это поправить
Что значит попробовать через буфер?
...
Рейтинг: 0 / 0
Импорт текста
    #39975721
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bandjo,
Буфер обмена.Скопировать и вставить
...
Рейтинг: 0 / 0
Импорт текста
    #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
Импорт текста
    #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
Импорт текста
    #39975835
Bandjo
При импорте не обрабатываются в тексте двойные кавычки и запятые, доходит до них и текст обрезается.
При обычном ручном импорте все проходит нормально.
"При обычном ручном импорте" система предлагает вам настроить спецификацию, по которой затем выполняет импорт. В ней и сама система, и вы ручками вносите параметры, отличные от дефолтных (например "=" как разделитель полей и убрать кавычки, как обрамление текста).
Спецификацию можно сохранить и ее имя использовать позднее, в частности в DoCmd.TransferText. Вы этого не делаете и импорт выполняется по дефолтным правилам, а там:
1. Текстовое поле берется в кавычки, а кавычки внутри текста дублируются;
2. Десятичный разделитель и разделитель полей берутся из системных настроек.
Но, видимо, начиная с Win7 разделитель полей игнорируется и используется ",". И если десятичный разделитель тоже ",", то получается жопа. (Возможно уже и исправили - не проверял).
Ваш текст этим требованиям не соответствует, вот и результат.

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

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


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