powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Програма импорта данных
18 сообщений из 18, страница 1 из 1
Програма импорта данных
    #35846975
sergeyermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день уважаемые знатоки!
У меня возникла такая проблема мне надо используя Append или что-то либо другое написать програму на ФоксПро которая бы подбирала текстовый файл(CSV)и импортировала его в ФоксПро, и по возможности это все встроить в .ехе чтоб при запуске віполнялись єти действия.

Помогите пожалуста.
Или дай те хотя бы идею как это все реализовать.
...
Рейтинг: 0 / 0
Програма импорта данных
    #35847661
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какие могут быть идеи
Сами же написали APPEND FROM там тип CVS есть
Но есть нюансы - если у вас "настоящий" CVS файл - тогда в нем первая строка содержит название полей поэтому при импорте такого типа файла первая строка не импортируеться.
Иногда попадаються файлы с расширением CVS , но у них нет "заголовка" , а сразу идут данные.В таких случаях первая строка теряеться.
Для таких нужно использовать DELIMITED
...
Рейтинг: 0 / 0
Програма импорта данных
    #35848368
sergeyermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто я хотел бы узнать где именно написать эту програму, что при запуски .ехе проекта на ФоксПро запускалась команда Append from&
...
Рейтинг: 0 / 0
Програма импорта данных
    #35848551
sergeyermakПросто я хотел бы узнать где именно написать эту програму, что при запуски .ехе проекта на ФоксПро запускалась команда Append from&
Программу пишут в среде разработки. В ней же отлаживают. Потом из нее же собирают ехе-файл.
Это что-то очень необычное?
...
Рейтинг: 0 / 0
Програма импорта данных
    #35849060
Зингер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergeyermakПросто я хотел бы узнать где именно написать эту програму, что при запуски .ехе проекта на ФоксПро запускалась команда Append from&
Если я правильно понял, то у вас должен запускаться EXE-файл, скомпилированный в проекте?
Тогда, как я писал уже:
1) Открываете файл на низком уровне - Fopen()
2) Читаете и перемещаете указатель внутри текстового файла - Fread() и Fseek()
3) Добавляете записи в таблицу - Append Blank ...
4) Закрываете файл (Обязательно) - Fclose()
...
Рейтинг: 0 / 0
Програма импорта данных
    #35851119
sergeyermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, считай что получилось.

Только можна ответить на вопрос, как сделать чтоб вся информация с текстового файла заносилася в таблицу которая принадлежит проекту, то есь импотрировалась из текстового файла в .dbf

Помогите пожайлуйста!!!
...
Рейтинг: 0 / 0
Програма импорта данных
    #35851191
sergeyermakСпасибо, считай что получилось.

Только можна ответить на вопрос, как сделать чтоб вся информация с текстового файла заносилася А сейчас не вся заносится? Через строку или как?в таблицу которая принадлежит проекту,Шо за зверь? то есь импотрировалась из текстового файла в .dbf
Ниче не понял. А сейчас она из воздуха берется? А куда импотрируется?
...
Рейтинг: 0 / 0
Програма импорта данных
    #35851404
sergeyermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я написал такой код

IF FILE('3.txt') && Does file exist?
gnErrFile = FOPEN('3.txt',12) && If so, open read/write
ELSE
gnErrFile = FCREATE('3.txt') && If not, create it
ENDIF
IF gnErrFile < 0 && Check for error opening file
WAIT 'Cannot open or create output file' WINDOW NOWAIT
ELSE && If no error, write to file
=FRead(gnErrFile,10)
=FSEEK (gnErrFile,0,2)
APPEND BLANK 1.dbf
ENDIF
=FCLOSE(gnErrFile) && Close file

Но оно не хочет работать, то есьт откуда оно будет брать мою таблицу?
...
Рейтинг: 0 / 0
Програма импорта данных
    #35851537
sergeyermakЯ написал такой код

IF FILE('3.txt') && Does file exist?
gnErrFile = FOPEN('3.txt',12) && If so, open read/write
ELSE
gnErrFile = FCREATE('3.txt') && If not, create it
ENDIF
IF gnErrFile < 0 && Check for error opening file
WAIT 'Cannot open or create output file' WINDOW NOWAIT
ELSE && If no error, write to file
=FRead(gnErrFile,10)
=FSEEK (gnErrFile,0,2)
APPEND BLANK 1.dbf
ENDIF
=FCLOSE(gnErrFile) && Close file

Но оно не хочет работать, то есьт откуда оно будет брать мою таблицу?
1. Зачем создавать отстутсвующий 3.txt? Что собрались импортировать из пустого файла?
2. Или таки он выходной файл и не из него, а в него надо ЭКСПОРТИРОВАТЬ данные из dbf? Если так, то зачем его создавать так?
3. В каком хелпе увидено/прочтено/понято такое: APPEND BLANK 1.dbf ? Что по Вашему мнению эта команда должна сделать?

И где здесь предложенная Append From? В виде
Код: plaintext
Appent from  3  type csv

Так из какого файла, что, в каком виде и куда надо перенести?
...
Рейтинг: 0 / 0
Програма импорта данных
    #35851627
sergeyermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне надо из 3.txt импотрировать даные в .dbf файл который уже существует, то есть его надо перезаписать.

Я сделал команду

APPEND FROM C:\Temp\1.txt TYPE CSV ;

И все работает, только почему то не импортирует первую запись из текстового файла.

И очень важный вопрос, как можно сделать чтоб при запуске моего .ехе проекта, запускалась приведена выще команда APPEND FROM, и импортировались данные?
...
Рейтинг: 0 / 0
Програма импорта данных
    #35851657
sergeyermak,

давайте таки один вопрос решить в одной теме, а не размазываться по двум. Отвечайте на вопросы в соседней теме, там и продолжим.
...
Рейтинг: 0 / 0
Програма импорта данных
    #35851720
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergeyermakЯ сделал команду

APPEND FROM C:\Temp\1.txt TYPE CSV ;

И все работает, только почему то не импортирует первую запись из текстового файла.

Вы вообще читаете что вам отвечают ?

-=AlexiS=-Но есть нюансы - если у вас "настоящий" CVS файл - тогда в нем первая строка содержит название полей поэтому при импорте такого типа файла первая строка не импортируеться.
Иногда попадаються файлы с расширением CVS , но у них нет "заголовка" , а сразу идут данные.В таких случаях первая строка теряеться.
Для таких нужно использовать DELIMITED
...
Рейтинг: 0 / 0
Програма импорта данных
    #35851733
sergeyermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не получаеться, все равно выводит без первой строки

APPEND FROM C:\Temp\1.txt DELIMITED TYPE CSV ;

или

APPEND FROM C:\Temp\1.txt TYPE DELIMITED CSV ;
...
Рейтинг: 0 / 0
Програма импорта данных
    #35851877
Зингер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergeyermakЯ написал такой код

IF FILE('3.txt') && Does file exist?
gnErrFile = FOPEN('3.txt',12) && If so, open read/write
ELSE
gnErrFile = FCREATE('3.txt') && If not, create it
ENDIF
IF gnErrFile < 0 && Check for error opening file
WAIT 'Cannot open or create output file' WINDOW NOWAIT
ELSE && If no error, write to file
=FRead(gnErrFile,10)
=FSEEK (gnErrFile,0,2)
APPEND BLANK 1.dbf
ENDIF
=FCLOSE(gnErrFile) && Close file

Но оно не хочет работать, то есьт откуда оно будет брать мою таблицу?

use <Ваша таблица> in <Алиас> && Отсюда ОНО будет брать таблицу

IF FILE('3.txt') && Такой файл есть?
gnErrFile = FOPEN('3.txt',12) && Если да, отрываем его
ELSE
gnErrFile = FCREATE('3.txt') && Если нет, то создаем его(Зачем?)
ENDIF
IF gnErrFile < 0 && Если открытие файла не произошло
WAIT ' Не могу открыть файл! ' WINDOW NOWAIT
ELSE && Если нет ошибок, файл открылся (Ура!)
cFraza =FRead(gnErrFile,10) &&Читаем первые 10 симоволов
=FSEEK (gnErrFile,0,2) &&Не надо (Курсор в файле и так уже переместился на десятую строку)
APPEND BLANK in 1.dbf
replace <поле1> with cFraza in <алиас> && Вот оно
ENDIF
=FCLOSE(gnErrFile) && Close file

Счастье!

Я сторонник такого подхода импорта/экспорта данных из текстового файла.
...
Рейтинг: 0 / 0
Програма импорта данных
    #35854134
sergeyermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можешь раскщать что писать в строку

replace <поле1> with cFraza in <алиас>,

И как поставить в FRead не десять записей, а все записи.

Короче сделал вот так но пишет ошибку "Не могу открыть файл!"

Убираю условия ошибки, тогда пишет что .dbf не существует

use zarplata!prem

IF FILE('1.txt')
gnErrFile = FOPEN('1.txt',12)
ELSE
gnErrFile = FCREATE('1.txt')
ENDIF
IF gnErrFile < 0
WAIT Не могу открыть файл!' WINDOW NOWAIT
ELSE
cFraza=FRead(gnErrFile,12)
APPEND BLANK in prem
replace Tn with cFraza in zarplata!prem
ENDIF
=FCLOSE(gnErrFile)


Можешь скинуть какой небудь свой рабочий пример?

И эта програма относиться ко всем текстовым файлам или нет.Просто у меня файл с расширением CSV

Заранее спасибо!
...
Рейтинг: 0 / 0
Програма импорта данных
    #35854602
Зингер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergeyermakА можешь раскщать что писать в строку

replace <поле1> with cFraza in <алиас>,

И как поставить в FRead не десять записей, а все записи.

Короче сделал вот так но пишет ошибку "Не могу открыть файл!"

Убираю условия ошибки, тогда пишет что .dbf не существует

use zarplata!prem

IF FILE('1.txt')
gnErrFile = FOPEN('1.txt',12)
ELSE
gnErrFile = FCREATE('1.txt')
ENDIF
IF gnErrFile < 0
WAIT Не могу открыть файл!' WINDOW NOWAIT
ELSE
cFraza=FRead(gnErrFile,12)
APPEND BLANK in prem
replace Tn with cFraza in zarplata!prem
ENDIF
=FCLOSE(gnErrFile)


Можешь скинуть какой небудь свой рабочий пример?

И эта програма относиться ко всем текстовым файлам или нет.Просто у меня файл с расширением CSV

Заранее спасибо!

Дано: Файл Imy.CSV - текстовой с содержанием 123456,Запись1. В качестве разделителя - ",". Задача: Импортировать данные в таблицу Table1.dbf со структурой Pole1 n(6), pole2 char(10).

create table table1 (pole1 n(6), Pole2 c(10)) -создаем таблицу

append blank in table1 &&добавляем запись в таблицу

if file('Imy.csv')=.t. &&Если файл найден
nFlag=fopen('imy.csv') &&открываем файл низкового уровня
cFraza=alltrim(fgets(nFlag,8190)) && Считываем всю первую строку, в нашем случае "123456,Запись1,"

*Далее ищем разделитель (запятую), т.е. chr(44) - Начало блока 1
FOR i=1 TO LEN(cfraza)
IF SUBSTR(cfraza,i,1)=CHR(44) && Это знак "," ?
replace Pole1 WITH VAL(SUBSTR(cfraza,1,i-1)) IN table1 && Проставляем в Pole1 123456
J=I+1
EXIT
ENDIF
ENDFOR
*Далее ищем разделитель (запятую), т.е. chr(44) - Конец блока 1

*Далее ищем разделитель (запятую), т.е. chr(44) - Начало блока 2
FOR i=J TO LEN(cFraza)
IF SUBSTR(cFraza,i,1)=CHR(44) && Это знак "," ?
replace Pole1 WITH VAL(SUBSTR(cFraza,1,i-1)) IN table1 && Проставляем в Pole2 "Запись1"
EXIT
ENDIF
ENDFOR
*Далее ищем разделитель (запятую), т.е. chr(44) - Конец блока 2
endif

=fclose(nFlag)
sele table1
browse
* И будет счастье!

Кстати, в качестве разделителя не советую использовать Chr(44), т.е. "," , потому что может попасться левая запятая. Лучше используй chr(1).
...
Рейтинг: 0 / 0
Програма импорта данных
    #35854850
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> *Далее ищем разделитель (запятую), т.е. chr(44) - Начало блока 1
> FOR i=1 TO LEN(cfraza)
> IF SUBSTR(cfraza,i,1)=CHR(44) && Это знак "," ?
> replace Pole1 WITH VAL(SUBSTR(cfraza,1,i-1)) IN table1 && Проставляем
> в Pole1 123456
> J=I+1
> EXIT
> ENDIF
> ENDFOR
> *Далее ищем разделитель (запятую), т.е. chr(44) - Конец блока 1

Товарищ! А вы не задумывались над тем, сколько по времени занимает ваш поиск
запятой???

Фокс сам по себе не самым оптимальным образом перераспределяет память при
работе со стораками, так мы еще строчные функции в цикл загоним. Ну а что?
Машины теперь мощные - нефиг процессорам простаивать!!!

Да и каждое поле описывать по отдельности - много чести:

cfraza='вчера, сегодня, завтра'

FOR i=1 TO OCCURS(',',cfraza)+1

j1=AT(',',cfraza,i)

IF i=1

j0=0

ELSE

j0=AT(',',cfraza,i-1)

ENDIF


IF j1=0

?LTRIM(SUBSTR(cfraza,j0+1))

ELSE

?LTRIM(SUBSTR(cfraza,j0+1,j1-j0-1))

ENDIF

ENDFOR


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Програма импорта данных
    #35860387
sergeyermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем кто откликнулся!

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


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