:: Visual Foxpro, Foxpro for DOS
импорт из необычного ТХТ
TiAmAT
Автор

Сообщений: 231
Дата регистрации: 23.07.2008
Доброго дня! Имеется тхт файл с необычной (для меня) структурой, который сформирован для печатного вида. Как вытащить и раскидать по полям содержимое? Прошу помощи :sos: Спасибо!


---------------------------------------------------------------------------------------------------------------------
Дата создания отчета: 04.02.17 06:00:40
Платежное поручение № @2PL200044 от 04.02.2017
---------------------------------------------------------------------------------------------------------------------
| Опер | Ф.И.О. | Лицевой| Адрес/ | Счетчики | Периоды |Принятая | Комис.
№ док. | день | плательщика | счет | Телефон |н.зн. -к.зн.| оплаты | сумма | с
| | | | | | | | получ.
---------------------------------------------------------------------------------------------------------------------
0.0.699855860 03.02 ВОЛОШ Ю. А5212 ГВАРДЕЙСКАЯ 6, 08.13- 08.13 30,00 0,00
кв. 53
0.0.699543428 03.02 ХАФИЗОВ С.М. 16910 ЧЕХОВА УЛ. 50 08.13- 08.13 70,00 0,00
Итого: 100,00 0,00
---------------------------------------------------------------------------------------------------------------------
Итого по р/с № 99999999999999: Кол-во платежей - 2
Сумма принятая: 100,00
Комиссия банка: 0,00
К перечислению: 100,00 Подпись бухгалтера:____________
---------------------------------------------------------------------------------------------------------------------



Исправлено 1 раз(а). Последнее : TiAmAT, 24.01.18 11:50
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Файл не структурированный, только парсингом с предварительной подчисткой, например

m.NewTextFromFile = strtran(strtran(strtran(filetostr(FileName),"--",""),"|",""),"_","")
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Pliskin

Сообщений: 2959
Откуда: Новосибирск
Дата регистрации: 19.11.2003
Привести его к обычной структуре и импортировать
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
1.Создать dbf-таблицу с полем Myfield C(254)

2. Выполнить команду:

APPEND FROM MYTEXT.TXT SDF

3. Обработать полученные записи, используя информацию о длине каждого блока данных. Результат разбора строки (или нескольких взаимосвязанных строк) записывать в выходной файл соответствующей структуры.



Исправлено 1 раз(а). Последнее : Simple777, 24.01.18 12:41
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Ничего предварительно править не надо. Это же не разовая функция. Надо один раз написать обработку документа (со всеми нюансами), и будет щастье.
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
- по позициям (скорее всего не будет работать в большинстве реальных случаев).
- используя регулярные выражения (куча геморроя, но в принципе более-менее рабочий вариант - конечно же до первого серьёзного изменения этой выходной формы, скажем перестановки местами ФИО/счёт или там дата/номер_дока).
- послать постановщика такой задачи на 3 буквы и потребовать предоставления данных в нормальной форме - пригодной для автоматизированной обработки информации. Благо таковых форм 100500 видов можно придумать, в т.ч. и "чисто текстовых" - например csv.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Pliskin

Сообщений: 2959
Откуда: Новосибирск
Дата регистрации: 19.11.2003
Simple777
APPEND FROM MYTEXT.TXT SDF

у ТС в примере одна запись на двух строчках
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
TiAmAT
Автор

Сообщений: 231
Дата регистрации: 23.07.2008
Simple777
Ничего предварительно править не надо.
не совсем понял...
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Pliskin
у ТС в примере одна запись на двух строчках
У него там далеко не одна запись и даже не из двух таблиц...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
TiAmAT
Автор

Сообщений: 231
Дата регистрации: 23.07.2008
Pliskin
Simple777
APPEND FROM MYTEXT.TXT SDF

у ТС в примере одна запись на двух строчках
да, и это всегда продолжение адреса. Это не проблема.
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
TiAmAT
Simple777
Ничего предварительно править не надо.
не совсем понял...

Имеется в виду, что входной текстовый файл нет необходимости править перед выполнением APPEN FROM.

Все нюансы можно обработать, работая с записями в таблице dbf.

Ну а то, что одна запись может занимать несколько строчек, дак это не беда. Это всё анализируется и обрабатывается. И это ещё довольно тривиальный документ для автоматизированной обработки. Проблемы могут быть, если во входном текстовом документе могут быть неоднозначности. Только тогда придется эти неоднозначности править вручную.
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
TiAmAT
Автор

Сообщений: 231
Дата регистрации: 23.07.2008
Igor Korolyov
- послать постановщика такой задачи на 3 буквы и потребовать предоставления данных в нормальной форме

да, видимо таки придётся послать. Но сначала попробую парсить.
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
TiAmAT
Автор

Сообщений: 231
Дата регистрации: 23.07.2008
Simple777
TiAmAT
Simple777
Ничего предварительно править не надо.
не совсем понял...

Имеется в виду, что входной текстовый файл нет необходимости править перед выполнением APPEN FROM.

Все нюансы можно обработать, работая с записями в таблице dbf.

Ну а то, что одна запись может занимать несколько строчек, дак это не беда. Это всё анализируется и обрабатывается. И это ещё довольно тривиальный документ для автоматизированной обработки. Проблемы могут быть, если во входном текстовом документе могут быть неоднозначности. Только тогда придется эти неоднозначности править вручную.

понял Спасибо вам за внимание и советы ;)
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Для тех, кто "в танке".

Иногда нет никакой возможности заставить вышестоящую организацию что-либо поменять. Вышестоящая организация может предложить или такой вот текстовый файл, или "ничего". Так бывает и с обслуживающими и смежными организациями. Вот и приходится обрабатывать такие документы.
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Simple777
Для тех, кто "в танке".
+100500
У меня например выписки из банка, тоже, далеко не лицеприятный документ, а еще и у разных банков, немного отличаются.
Ничего сложного в разборе этой хрени нет.

Тока... а на фига в таблицу, чем разбор записи, отличается от разбора строки?
Но это дело вкуса. Главное, алгоритм разбора придумать.
И сразу в 3 таблицы кидать. Шапка, тело, подвал.
Можно конечно в 1, с повтором полей, но... не красиво.


------------------
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
vnkor

Сообщений: 324
Дата регистрации: 04.10.2007
Думаю, ТС 3 таблицы не надо. Скорее всего, надо просто раскидать суммы платежей по лицевым счетам в таблицу оплат. Еще, возможно, и показания счетчиков.
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Simple777
TiAmAT
Simple777
Ничего предварительно править не надо.
не совсем понял...

Имеется в виду, что входной текстовый файл нет необходимости править перед выполнением APPEN FROM.

Все нюансы можно обработать, работая с записями в таблице dbf.

Ну а то, что одна запись может занимать несколько строчек, дак это не беда. Это всё анализируется и обрабатывается. И это ещё довольно тривиальный документ для автоматизированной обработки. Проблемы могут быть, если во входном текстовом документе могут быть неоднозначности. Только тогда придется эти неоднозначности править вручную.

Можно, конечно и так, сначала вымыть люстру, а потом подметать полы ;)
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Chemberzhy
Можно, конечно и так, сначала вымыть люстру, а потом подметать полы

Или так: пока один курит трубку, другой чистит пепельницу. ;)
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
Vladimir Sklyar

Сообщений: 1397
Дата регистрации: 13.06.2002
попроси приват слать дбфку, они могут (если оговорено в договоре, структуру можешь предложить свою или взять их, там ничего сложного) чтобы в будущем не было проблем с импортом (вдруг они сменят вид выписки)


------------------
С уважением Владимир.




Исправлено 1 раз(а). Последнее : Vladimir Sklyar, 25.01.18 11:44
Ratings: 0 negative/0 positive
Re: импорт из необычного ТХТ
tandem

Сообщений: 16
Дата регистрации: 25.05.2008
TiAmAT
Доброго дня! Имеется тхт файл с необычной (для меня) структурой, который сформирован для печатного вида. Как вытащить и раскидать по полям содержимое? Прошу помощи :sos: Спасибо!

---------------------------------------------------------------------------------------------------------------------
Дата создания отчета: 04.02.17 06:00:40
Платежное поручение № @2PL200044 от 04.02.2017
---------------------------------------------------------------------------------------------------------------------
| Опер | Ф.И.О. | Лицевой| Адрес/ | Счетчики | Периоды |Принятая | Комис.
№ док. | день | плательщика | счет | Телефон |н.зн. -к.зн.| оплаты | сумма | с
| | | | | | | | получ.
---------------------------------------------------------------------------------------------------------------------
0.0.699855860 03.02 ВОЛОШ Ю. А5212 ГВАРДЕЙСКАЯ 6, 08.13- 08.13 30,00 0,00
кв. 53
0.0.699543428 03.02 ХАФИЗОВ С.М. 16910 ЧЕХОВА УЛ. 50 08.13- 08.13 70,00 0,00
Итого: 100,00 0,00
---------------------------------------------------------------------------------------------------------------------
Итого по р/с № 99999999999999: Кол-во платежей - 2
Сумма принятая: 100,00
Комиссия банка: 0,00
К перечислению: 100,00 Подпись бухгалтера:____________
---------------------------------------------------------------------------------------------------------------------

* Обработка текстовой информации
clear
infile=Getfile('TXT')
If File(infile)
gnFile = Fopen(infile,10)
Else
Return
Endif
If gnFile < 0
Wait 'Не могу открыть файл' Window Nowait
Return
Endif
Clear
поручение=""
док=""
*Обработка строк пока не конец файла.
Do While !Feof(gnFile)
strok=Fgets(gnFile)
* Захват номера документа
If At("Платежное",strok)>0
?strok
поручение=Substr(strok,27,121)
?поручение
Endif
* Если документ
If At("0.0",strok)>0
?strok
?Substr(strok,6,13)
?Substr(strok,20,5)
?Substr(strok,26,15)
?Substr(strok,40,6)
*...
Endif
Enddo
=Fclose(gnFile)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 21 (Гостей: 21)

© 2000-2024 Fox Club 
Яндекс.Метрика