powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / txt-dbf
10 сообщений из 10, страница 1 из 1
txt-dbf
    #32413729
novichek1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
U menya takaya problema: Yest tekstovie fayli , nado iz etix faylov pereobraovat .dbf. Pomaqite pojalusta!
...
Рейтинг: 0 / 0
txt-dbf
    #32413752
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
определи какой разделитель у записей в строке файлоф и RTFM on APPEND FROM c предложением DELIMITED
...
Рейтинг: 0 / 0
txt-dbf
    #32413802
Легко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:) А если разделителя нет, то в таких случаях можно воспользоваться MS Excel как посредником - но это в том случае, когда текст визуально разбит на колонки - что тоже не часто случается.
Действия: На этапе открытия текста в Excel расставить разделители колонок нужным образом - сохранить как таблицу Dbase IV и закрыть - открыть эту таблицу в Фоксе
...
Рейтинг: 0 / 0
txt-dbf
    #32413821
novichek1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет! Помогите, пожалуйста, решть следующую проблему. Существует текстовой документ, набранный в DOS, в нем много строк. В конце каждой строки стоит указатель конца строки (в нашем случае *). Например:
Е13-225#Т.Ч.П.3.2.в(А5.0,9) (Р1.0,9,0,8#)'23''+ ;П.1*
Е13-226#Т.Ч.П.3.2.в(А5.0,9) (Р1.0,9,0,8#)'23''+ ;П.1*
и т.д.
Мне надо этот текстовой документ перевести в базу. Команда APPEND FROM Delimited нужного эффекта не дает. А если текст слишком большой, то выходит ошибка "Слишком длинная строка".
И еще такая проблема. В текстовом документе DOS данные набраны на русском языке. При превращении его в базу на Visual Foxpro русские буквы не читаются. Подскажите как решить такую проблему.
Заранее благодарен.
...
Рейтинг: 0 / 0
txt-dbf
    #32413826
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык Легко тебе прям разжевал, как это легко же через Ехель влить и в нем сохранить как таблицу. Там и визард будет и фс:Е что хочешь для души!
...
Рейтинг: 0 / 0
txt-dbf
    #32413914
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу концов строки.
Я так понял, что "нормальных" концов строки (chr(13)+chr(10)) у Вас нет.
Ну, тогда сначала нужно над файлом провернуть что-то вроде:

strtofile(strtran(filetostr('filename'),'*',chr(13)+chr(10)),'filenam1')

А в append from есть необязательный параметр AS nCodePage

В общем, RTFM ;-)
...
Рейтинг: 0 / 0
txt-dbf
    #32414469
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще всего:
File\Import\Import Wizard\...
...
Рейтинг: 0 / 0
txt-dbf
    #32416419
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начиная с версии VFP6 появилась команда ALINES()

Эта команда переводит содержимое любого текста в элементы одномерного массива. В качестве разделителей строк используется символ перевода строки. Т.е. в твоем случае это будет примерно так:

Код: 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.
LOCAL lcString

* Переводим текстовый файл в строку
lcString=FileToStr( "FileName.txt" )

* Если кодовая страница текстового файла отличается 
* от текущей кодовой страницы, то необходима конвертация
lcString=CPCONVERT( 866 , 1251 ,m.lcString)

* Удаляю из строки все символы Chr( 13 ) и Chr( 10 )
* Чтобы не было конфликтов с разделителем - звездочкой
lcString=ChrTran(m.lcString,chr( 13 )+chr( 10 ), "")

* Заменяем в строке все символы " * " на символ Chr(13 )
lcString=ChrTran(m.lcString,"*",chr( 13 ))

* Разделяю строку по элементам массива
LOCAL laString( 1 )
=ALINES(laString,m.lcString)

* Теперь читаю каждую строчку массива и копирую нужные фрагменты в поля таблицы
LOCAL lnI, lcOneLine
FOR lnI= 1  TO ALEN(laString, 1 )
	lcOneLine=laString[ 1 ]
	select MyTab
	APPEND BLANK
	REPLACE Field1 WITH SubStr(lcOneLine, 1 , 10 ), ;
		Field1 WITH SubStr(lcOneLine, 11 , 10 ), ;
		...
ENDFOR


Разумеется, разбор каждой строки по полям может быть значительно сложнее. Я привел простейший вариант.

У такого способа есть ограничения:

1) Размер файла не должен превышать 16МБ
2) Количество строк не должно превышать 65000

Это системные ограничения FoxPro на работу с символьными строками и массивами.
...
Рейтинг: 0 / 0
txt-dbf
    #32419085
novichek1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, Спасибо большое за помощь с переводом текста в dbf. Но у меня возникли проблемы. Знак "*" в качестве конца строки эти команды "не воспринимают". В базу превращается только первая строка (до *). А дальше ничего. А строк у меня очень много. И еще у меня несколько аналогичных текстовых файлов, но с несколько разными значениями полей в пределах ' '. Можно ли обрабатывать их одной программой или для каждого текстового файла придется делать персональную?
Я пробовал импортировать файлы сначала в Excel, а потом в dbf (текстовые файлы в одну строку). В некоторых случаях при импорте в Foxpro на первом этапе выходили ошибки 107 "Несовпадение типа оператора и операнда" или 1712 "Повторяющееся или недопустимое имя поля". А если файл большой (свыше 4кБ), файл при импорте в Excel загружается не полностью. Подскажите, пожалуйста, как быть и в этом случае тоже. Заранее благодарен.
...
Рейтинг: 0 / 0
txt-dbf
    #32419800
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
novichek1

Если Вы хотите быстро получить ответ, постарайтесь задавать вопрос так, чтобы не было необходимости переспрашивать:

Знак "*" в качестве конца строки эти команды "не воспринимают". В базу превращается только первая строка (до *). А дальше ничего.

О каких командах идет речь?

И еще у меня несколько аналогичных текстовых файлов, но с несколько разными значениями полей в пределах ' '.

Не понял. В пределах чего разные значения?

Можно ли обрабатывать их одной программой или для каждого текстового файла придется делать персональную?

Зависит от того, как именно разделяются поля в пределах одной строки. Если можно формализировать некоторое правило, опираясь на которое в любом Вашем файле можно с уверенностью сказать, что вот здесь заканчивается одно поле и начинается другое, то универсальная процедура возможна. Если же для каждого файла будет свое правило, то несколько процедур.

Я пробовал импортировать файлы сначала в Excel, а потом в dbf (текстовые файлы в одну строку).

Это как?

И еще, Вы вообще-то пробовали приведенный мной код? Или хотябы разобрались что там к чему? Какая у Вас версия FoxPro?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / txt-dbf
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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