powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Текстовый файл в dbf
14 сообщений из 14, страница 1 из 1
Текстовый файл в dbf
    #32798856
Lena_yan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Помогите с такой проблемой.
Есть текстовый файл. Он содержит данные, которые имеют символ-разделитель ":", также имеются заголовки между данными.
Надо эти данные перенести в таблицу dbf.

Подскажите общую концепцию решения.
Какие функции использовать?
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798861
командой
append from <filename> delimited with character ":"
но, что такое "имеются заголовки между данными" ?
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798889
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lena_yanЗдравствуйте!
Помогите с такой проблемой.
Есть текстовый файл. Он содержит данные, которые имеют символ-разделитель ":", также имеются заголовки между данными.
Надо эти данные перенести в таблицу dbf.

Подскажите общую концепцию решения.
Какие функции использовать?
Все правильно сказано в предыдущем сообщении. Однако, если есть какие-либо "шероховатости", не позволяющие прямо использовать append from, то лучше использовать низкоуровневый доступ к файлам (fopen,fread,fgets и т.д.).
В этом случае придется почти все "делать руками", зато можно сделать "почти все". Главное, чтобы формат файла строго выдерживался...

Один раз мне пришлось в dbf-ку вносить данные из текстового файла следующего формата:

1-я строка: количество записей в файле
2-я строка: Исходящие характеристики файла (дата формирования, кто формировал, откуда и т.д.)
3-я строка: № заказа
4-я строка и до конца файла: позиции заказа (код, количество), разделенные ":"

И ничего не оставалось делать, кроме как работать через низкоуровневый доступ...
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798923
Lena_yan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий Маликов
После append from какой тип будет у полей в таблице. Все будут char?
Но там есть и числа.
А заголовки между данными - это сначала название "Справка такая-то", потом данные в виде таблице разделенные ":". Через n-строк опять "Справка такая-то" и опять данные.

Станислав С
У меня почти такой же формат текстового файла.
1-я строка: Информация о системе, которая сделала этот файл
2-я строка: Кто сделал
3-я строка: Заголовок (Справка о погрузке сухогрузов)
4-я строка: За какой период
5-я строка: Дата формирования
6-я строка: символы (=========)
7-я и 8-я строки: заголовки столбцов
9-я строка: символы (--------)
10-я строка: название порта
11-я строка: название судна
с 12 по n - данные разделенные :
на n+1 - название судна
с n+2 по ...... - опять данные разделенные :
И так несколько справок в одном файле.

Можно поподробней про функции?
Я понимаю так:
1.Надо прочитать строку
2.Разобрать ее
3.Вставить соответствующие данные в соответствующие столбцы
А как организовать переход к следующей строке?
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798928
команда append применяется к уже созданной и открытой в текущей рабочей области таблице
структура таблицы должна соответствовать структуре данных в текстовом файле
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798935
по описанию текстового файла видно, что комманду append применить не получиться, нужно программно разбирать строки, как сказано в сообщении от Станислав C.
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798937
Lena_yanА как организовать переход к следующей строке?
команда чтения из файла fget() как раз и возвращает следующую строку
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798942
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lena_yan Можно поподробней про функции?
Я понимаю так:
1.Надо прочитать строку
2.Разобрать ее
3.Вставить соответствующие данные в соответствующие столбцы
А как организовать переход к следующей строке?
При низкоуровневом доступе к файлам можно рассматривать файл как одну очень длинную строку. Если Вы помните, что такое бобинные магнитофоны, то можно файл сравнить с лентой на бобине, а указатель на текущую позицию - с магнитной головкой.
При открытии файла при помощи fopen() указатель устанавливается на начало файла. Функции чтения из файла (fread(),fgets()) смещают указатель на считанное число байт. Так что, если Вы считываете строку целиком, то переход на следующую (позиционирование указателя) происходит автоматически. Иначе, необходимо отслеживать появление в считанных данных пары "возврат каретки-перевод строки".
Хотя про работу с этими функциями (fopen,fread,fgets и т.д.) подробно написано в Фоксовом Хелпе, я порекомендовал бы прочитать что-нибудь другое, например Хелп из С++/ДОС (типа Quick C, TC и т.д.) по работе файлами. Там это объяснено, как мне кажется, лучше... Ну, или прочитайте соответствующий раздел в учебниках по С/С++...
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798977
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так ?
g=fopen('...',2)
for i=1 to 11
s=fget(g)
endfor
do while !eof()
s=fget(g)
if(at(s,':')#0)
s1=substr(s,1,at(s,':')-1)
s2=substr(s,1,at(s,':',2)-1)
....................
insert into t1 (f1,f1) values (s1,val(s2))
endif
enddo
fclose(g)
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798978
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
з.ы.
создание таблицы проверка кода на ошибки и обеспечение безопасности при сканировании файла за вами а так код примерно такой
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32798987
Lena_yan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо всем за отклики :)
Буду пробовать.

Еще такой вопрос:
У этого файла Кодовая страница - DOS (866)
Как перед открытием файла задать эту кодировку, а то всякие иероглифы получаются?
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32799021
Lena_yanЕще такой вопрос:
У этого файла Кодовая страница - DOS (866)
Как перед открытием файла задать эту кодировку, а то всякие иероглифы получаются?
есть такие фунции, как cpconvert() и oemtoansi()
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32799041
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.....
s=cpconvert(866,1251,fget(g))
....
...
Рейтинг: 0 / 0
Текстовый файл в dbf
    #32810480
Vaska_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Фокс свежий (7-8-9) то читать строку, полученную FGETS можно по словам
GETWORDCOUNT(lcSlovo,':') - количество слов
GETWORDNUM(lcSlovo,Х,':') - Х нужное слово в строке
или я не в тему :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Текстовый файл в dbf
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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