powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выгрузка в *.txt
26 сообщений из 26, показаны все 2 страниц
Выгрузка в *.txt
    #33066415
Akel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, плиз. Мне нужно имеющиеся данные из таблиц выгрузить в текстовый файл. Как это можно проделать? Желательно чтоб еще можно было указать путь.
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33066424
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
COPY TO FileName
[FIELDS FieldList]
[Scope] [FOR lExpression1] [WHILE lExpression2]
[[WITH] CDX] | [[WITH] PRODUCTION]
[NOOPTIMIZE]
[[TYPE] [FOXPLUS | FOX2X | DIF | MOD
| SDF | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5
| DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB]]]
[AS nCodePage]

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer && Opens Customer table

COPY NEXT 3 TO temp TYPE DELIMITED
WAIT WINDOW 'This is the delimited text file' NOWAIT
MODIFY FILE temp.txt
DELETE FILE temp.txt
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33066433
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например:

Код: plaintext
1.
select MyTable
COPY TO "C:\Мои документы\MyFile.txt" TYPE DELIMITED
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33066479
Akel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно примерно в следущем виде, чтоб получилось:
Код: plaintext
1.
2.
#(переменная  1 )#MyTable.datedoc#MyTable.date#(переменная  2 )#Kassa.account#Org.account#(Переменная  3 )## 0 # 9 # 1 
* новая строка
#MyTable.numberdoc#MyTable.summa
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33066733
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай описание команды

TEXT ... ENDTEXT Command

Ну, или вручную, через FOPEN(), FWRITE()
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33067311
ser57
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понял тебе надо файл *.dbf сбросить в текстовый файл с разделителем #.
Это обеспечивает команда Copy to имя файла TYPE DELIMITED WITH #
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33068230
Akel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМПочитай описание команды

TEXT ... ENDTEXT Command

Ну, или вручную, через FOPEN(), FWRITE()
Почитал..., целых пол дня бьюсь и никак.
Может дашь ссылочку где более менее подробно написано, если не трудно?!
просто не пойму как внутренее содержание TEXT ... ENDTEXT отправить в текстовый файл.

ser57Я понял тебе надо файл *.dbf сбросить в текстовый файл с разделителем #.
Это обеспечивает команда Copy to имя файла TYPE DELIMITED WITH #
Не совсем так, мне нужно сбросить не все данные, а только избранные, причем из разных таблиц(на крайняк запомню все в глобальных переменных)и это в перемешку с существующими перемеными.
И кстати пробовал экспортировать с WITH # он мне еще запятые сует и не везде разделитель ставит.
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33068337
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот простейший пример записи Log-а ошибок выполнения команд на SQL сервере в текстовый файл:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
LPARAMETERS lErrorNumber, lTextError, txtCommandSQL
*-- Процедура записывает сообщение об ошибке в файл ошибок
#DEFINE		LOGFILE		"ERRODBC.TXT"
LOCAL lFile
IF !DIRECTORY("LOG")
	MKDIR LOG
ENDIF
m.lFile = "LOG\" + LOGFILE
SET ALTERNATE TO (m.lFile) ADDITIVE
SET CONSOLE OFF
SET ALTERNATE ON
? "**********" + DTOC(DATE()) + "  " + TIME() + "**********"
? "ODBC драйвер вернул ошибку № " + ALLTRIM(STR(m.lErrorNumber))
? "Сервер: " + THIS.SQLServer
? "SQL-Login: " + THIS.User_login 
? lTextError
? "Пользователь - " + SYS( 0 )
? "Команда " + m.txtCommandSQL
?  
SET ALTERNATE OFF
SET ALTERNATE TO
SET CONSOLE ON

С уважением, Алексей.

P.S. Этот метод расположен в классе - "обертки" ( wrapper), методы которого "общаются" с SQL-сервером:
THIS.SQLServer - имя SQL-сервера
THIS.User_login - Login пользователя
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33068433
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akel ВладимирМПочитай описание команды

TEXT ... ENDTEXT Command

Ну, или вручную, через FOPEN(), FWRITE()
Почитал..., целых пол дня бьюсь и никак.
Может дашь ссылочку где более менее подробно написано, если не трудно?!
просто не пойму как внутренее содержание TEXT ... ENDTEXT отправить в текстовый файл.

Так в описании к этой команде есть пример. Но если не понятно, то примерно так:

Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
* Пример работы Text...EndText

* Формируем исходную таблицу
CREATE CURSOR test (testId I, NickName C( 50 ), DateModify T)
INSERT INTO test (testId, NickName, DateModify) ;
		VALUES ( 1 , "Первая строка", DateTime())
INSERT INTO test (testId, NickName, DateModify) ;
		VALUES ( 2 , "Вторая строка", DateTime())
		
* Создаем текстовый файл, куда пойдет запись
STORE FCREATE('names.txt') TO _TEXT
IF _TEXT = - 1 
	* Создать файл не удалось, прерываемся
	RETURN
ENDIF

* Необходимые настройки
SET TALK OFF
SET TEXTMERGE ON

* Теперь, собственно экспорт
TEXT
	Заголовок текстового файла
Дата создания <<DATE()>> Время создания <<TIME()>>
=================================================
ENDTEXT

* Экспорт из таблицы
LOCAL lnI
lnI =  0 
select test
SCAN
	lnI = m.lnI+ 1 
	TEXT
Строка <<m.lnI>>#<<test.testId>>#<<AllTrim(test.NickName)>>#<<test.DateModify>>
	ENDTEXT
ENDSCAN

* Закрываем текстовый файл
FCLOSE(_TEXT)
* Смотрим, что получилось
MODIFY FILE names.txt

Т.е. вкратце, идея заключается в следующем:

То, что находится между ключевыми словами TEXT и ENDTEXT печатается в файл "как есть". Буквально. С точностью до символа. В специальных двойных угловых скобках указываются функции FoxPro, значение которых будет вычислено перед тем, как вставить в тектовый файл.


Хендл текcтового файла, куда пойдет запись должен быть сохранен в системной переменной _TEXT


Для активизации экспорта в текстовый файл необходимо сделать настройку SET TEXTMERGE ON
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33068794
Akel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо!!! "Разживал" очень подробно и понятно=)))
Все получается, только маленькая проблемка, он начинает заносить со второй строки, т.е. первая идет как переход на новую строку, а мне надо бы все с первой строки. Может, что то нужно настроить?
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33068900
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При использовании TEXT...ENDTEXT избавиться от первой пустой строки невозможно. Но существует еще операторы "\|\\", которые работают при тех же настройках.

Одиночный обратный слеш - печать с новой строки
Двойной обратный слеш - печать в той же строке, без перехода на новую строку

Вот альтернативный вариант того же кода

Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
* Пример работы Text...EndText

* Формируем исходную таблицу
CREATE CURSOR test (testId I, NickName C( 50 ), DateModify T)
INSERT INTO test (testId, NickName, DateModify) ;
		VALUES ( 1 , "Первая строка", DateTime())
INSERT INTO test (testId, NickName, DateModify) ;
		VALUES ( 2 , "Вторая строка", DateTime())
		
* Необходимые настройки
SET TALK OFF
SET TEXTMERGE ON NOSHOW
SET TEXTMERGE TO names.txt

\\	Заголовок текстового файла
\Дата создания <<DATE()>>
\\ Время создания <<TIME()>>
\=================================================

* Экспорт из таблицы
LOCAL lnI
lnI =  0 
select test
SCAN
	lnI = m.lnI+ 1 
* Альтернативный вариант
*\Строка <<m.lnI>>#<<test.testId>>#<<AllTrim(test.NickName)>>#<<test.DateModify>>
	TEXT
Строка <<m.lnI>>#<<test.testId>>#<<AllTrim(test.NickName)>>#<<test.DateModify>>
	ENDTEXT
ENDSCAN

* Закрываем текстовый файл
SET TEXTMERGE TO
SET TEXTMERGE OFF

* Смотрим, что получилось
MODIFY FILE names.txt

Указание выходного файла через SET TEXTMERGE TO или через _TEXT=FOPEN() являются взаимозаменяемыми. Это просто разный синтаксис одного и того же.

Как видно из примера, можно использовать одновременно и синтаксис "\|\\" и TEXT...ENDTEXT. Нельзя только вкладывать их друг в друга. Точнее, можно, но вложенные опреаторы будут восприняты как обычный текст и выведены в результирующий текстовый файл.
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33068975
Akel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, получилось=)))
Кстати, может знаешь где help можно скачать нормальный, желательно на русском языке. Просто у меня не полный и глючит.
Еще раз огромное спасибо , ты мне очень сильно помог !!!!!=)))
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33069048
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На русском языке существует только HELP по VFP3. Но в данном случае - он вполне подойдет. А вообще-то, HELP ко всем версиям FoxPro можно скачать здесь

http://vfp.narod.ru/Briefcase/Briefcase.htm
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33069229
Akel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оки, посмотрю.
Все файл получился, только одно "НО" даже незнаю маленькое или нет. Кодировка нужна DOS, а не WIN.
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33069247
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CPCONVERT(nCurrentCodePage, nNewCodePage, cExpression)
скачайте быстрее хелп !!!
естественно эту команду нужно применить на каждой строчке записывемой в файл
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33069258
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkelВсе файл получился, только одно "НО" даже незнаю маленькое или нет. Кодировка нужна DOS, а не WIN.
Для конвертации текстовых данных в нужную кодовую страницу используют функцию

Код: plaintext
1.
2.
CPCONVERT(Номер_текущей_кодовой_страницы, ;
	Номер_нужной_кодовой_страницы, ;
	Конвертируемый текст)

В твоем случае это будет выглядеть так:

Код: plaintext
1.
2.
TEXT
<<CPCONVERT( 1251 , 866 ,AllTrim(MyTable.MyField))>>
ENDTEXT

Можно создать весь файл в кодировке Win, а потом сразу весь его и конвертировать:

Код: plaintext
1.
2.
3.
LOCAL lcFile
lcFile = FileToStr("MyFile.txt")
lcFile = CPCONVERT( 1251 , 866 ,m.lcFile)
StrToFile(m.lcFile,"MyFile.txt")

Функции FileToStr() и StrToFile() введены с версии VFP6
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #33069282
Akel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, у меня нет слов=))) Супер все работает=)))
Терь шаблон грузится и все четко отрабатывает=)))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Выгрузка в *.txt
    #38764550
oleg505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Классный пост , только у меня проблема с пустой строкой так и не ушла , мне надо чтоб без заголовка сразу строки из базы шли и все . И еще хотел спросить как мне название файла .тхт менять через переменную скажем дата, время или месяц словом ? Спасибо заранее.
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #38764645
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akel, русские хэлпы VFP9 есть на ссылках http://vfpx.codeplex.com/releases/view/10203 (dv_foxhelp_as.rar) и http://eknigi.org/raznoe/17863-microsoft-visual-foxpro-v90-russian-help-menu.html (vfp9ru.rar)
Учите английский!
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #38764661
Rostislav D. Kudryashov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg505, так чего тебе, дитятко, надо? Как расшифровать твой вопрос?
oleg505чтоб без заголовка сразу строки из базы шли и все
Уже ведь был ответ:
COPY TO <FileName> SDF
- даёт именно только строки записей из таблицы и "всё", т.е. ничего кроме.
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #38765172
oleg505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rostislav D. Kudryashov,
Я так то не слепой , и далеко не дитятко , или тут все кто написал больше 200 сообщений всем кто пишет первое может хамить не зная человека в лицо ? Как выше изложено , что строки в выгружаемом файле необходимо разделить , и уважаемый ВладимирМ это показывает , там как раз для шипко зрячих речь идет о пустой строке , которая в начале формируется , вот ее мне необходимо убрать и разделить записи ";" Теперь вопрос лично к Вам уваавемый Rostislav D. Kudryashov напишите пожалуйста ,как при помощи команды COPY TO <FileName>SDF разделить строки ";". Если Вы мне поможете при помощи данной команды это сделать буду благодарен.
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #38765199
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
COPY TO mytxt.txt DELIMITED WITH CHARACTER ';'
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #38765209
oleg505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
Пробовал , там ковычки "" они мне не нужны , нужны чистые строки разделенные ;
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #38765230
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Код: sql
1.
COPY TO mytxt.txt DELIMITED WITH CHARACTER ';'



ccontent = FILETOSTR("mytxt.txt")
ccontent = STRTRAN(ccontent, '"', '')
STRTOFILE(ccontent, "mytxt.txt")
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #38765267
oleg505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,
Спасибо !!
...
Рейтинг: 0 / 0
Выгрузка в *.txt
    #38765327
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGccontent = STRTRAN(ccontent, '"', '')
Только учти что это уберет в т.ч. кавычки внутри символьных полей. Т.е. если было ООО "Рога и копыта" то станет ООО Рога и копыта
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выгрузка в *.txt
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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