|
Програма импорта данных
|
|||
---|---|---|---|
#18+
Добрый день уважаемые знатоки! У меня возникла такая проблема мне надо используя Append или что-то либо другое написать програму на ФоксПро которая бы подбирала текстовый файл(CSV)и импортировала его в ФоксПро, и по возможности это все встроить в .ехе чтоб при запуске віполнялись єти действия. Помогите пожалуста. Или дай те хотя бы идею как это все реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2009, 18:50 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
А какие могут быть идеи Сами же написали APPEND FROM там тип CVS есть Но есть нюансы - если у вас "настоящий" CVS файл - тогда в нем первая строка содержит название полей поэтому при импорте такого типа файла первая строка не импортируеться. Иногда попадаються файлы с расширением CVS , но у них нет "заголовка" , а сразу идут данные.В таких случаях первая строка теряеться. Для таких нужно использовать DELIMITED ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2009, 10:49 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
Просто я хотел бы узнать где именно написать эту програму, что при запуски .ехе проекта на ФоксПро запускалась команда Append from& ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2009, 14:29 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
sergeyermakПросто я хотел бы узнать где именно написать эту програму, что при запуски .ехе проекта на ФоксПро запускалась команда Append from& Программу пишут в среде разработки. В ней же отлаживают. Потом из нее же собирают ехе-файл. Это что-то очень необычное? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2009, 15:32 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
sergeyermakПросто я хотел бы узнать где именно написать эту програму, что при запуски .ехе проекта на ФоксПро запускалась команда Append from& Если я правильно понял, то у вас должен запускаться EXE-файл, скомпилированный в проекте? Тогда, как я писал уже: 1) Открываете файл на низком уровне - Fopen() 2) Читаете и перемещаете указатель внутри текстового файла - Fread() и Fseek() 3) Добавляете записи в таблицу - Append Blank ... 4) Закрываете файл (Обязательно) - Fclose() ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2009, 17:33 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
Спасибо, считай что получилось. Только можна ответить на вопрос, как сделать чтоб вся информация с текстового файла заносилася в таблицу которая принадлежит проекту, то есь импотрировалась из текстового файла в .dbf Помогите пожайлуйста!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 15:28 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
sergeyermakСпасибо, считай что получилось. Только можна ответить на вопрос, как сделать чтоб вся информация с текстового файла заносилася А сейчас не вся заносится? Через строку или как?в таблицу которая принадлежит проекту,Шо за зверь? то есь импотрировалась из текстового файла в .dbf Ниче не понял. А сейчас она из воздуха берется? А куда импотрируется? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 15:53 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
Я написал такой код 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 Но оно не хочет работать, то есьт откуда оно будет брать мою таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 16:51 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
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
Так из какого файла, что, в каком виде и куда надо перенести? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 17:38 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
Мне надо из 3.txt импотрировать даные в .dbf файл который уже существует, то есть его надо перезаписать. Я сделал команду APPEND FROM C:\Temp\1.txt TYPE CSV ; И все работает, только почему то не импортирует первую запись из текстового файла. И очень важный вопрос, как можно сделать чтоб при запуске моего .ехе проекта, запускалась приведена выще команда APPEND FROM, и импортировались данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 18:06 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
sergeyermak, давайте таки один вопрос решить в одной теме, а не размазываться по двум. Отвечайте на вопросы в соседней теме, там и продолжим. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 18:14 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
sergeyermakЯ сделал команду APPEND FROM C:\Temp\1.txt TYPE CSV ; И все работает, только почему то не импортирует первую запись из текстового файла. Вы вообще читаете что вам отвечают ? -=AlexiS=-Но есть нюансы - если у вас "настоящий" CVS файл - тогда в нем первая строка содержит название полей поэтому при импорте такого типа файла первая строка не импортируеться. Иногда попадаються файлы с расширением CVS , но у них нет "заголовка" , а сразу идут данные.В таких случаях первая строка теряеться. Для таких нужно использовать DELIMITED ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 18:52 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
Не получаеться, все равно выводит без первой строки APPEND FROM C:\Temp\1.txt DELIMITED TYPE CSV ; или APPEND FROM C:\Temp\1.txt TYPE DELIMITED CSV ; ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 19:08 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
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 Счастье! Я сторонник такого подхода импорта/экспорта данных из текстового файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2009, 21:10 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
А можешь раскщать что писать в строку 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 Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2009, 17:51 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
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). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2009, 22:25 |
|
Програма импорта данных
|
|||
---|---|---|---|
#18+
> *Далее ищем разделитель (запятую), т.е. 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 05:59 |
|
|
start [/forum/topic.php?fid=41&msg=35851191&tid=1586690]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 335ms |
total: | 480ms |
0 / 0 |