Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как создать такой текстовый файл?? / 16 сообщений из 16, страница 1 из 1
10.12.2004, 13:37
    #32823133
alex_dch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
для банка требуется на дискетке принести информацию в таком виде:


АО “МОСХЛЕБТОРГ”
12 июня 2001 г.
отделение «Алексеевское»
R ; VE
RUB

ИВАНОВА;СВЕТЛАНА;НИКОЛАЕВНА;МОНОЛИТ;VII-МЮ №3214564;21.12.80 43 ОМ Г.МОСКВЫ;МОСКВА,УЛ. ЗЕЛЕНАЯ Д.18, КОРП. 3, КВ.123; 19650517;456-76-13;123-12-78;
SVETLANA IVANOVA ПЕТРОВА; ЕЛЕНА;СЕРГЕЕВНА;; 2456 3214564;11.01.01 57 ОМ Г.МОСКВЫ;МОСКВА,УЛ.ВОЛХОНКА Д.2, КВ.11;19800501; ; ; ;


первый блок и второй делаю разными запросами, а как
это все объединить в одном текстовом файле,
чтоб форматирование было как указано??
...
Рейтинг: 0 / 0
10.12.2004, 14:04
    #32823229
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
Для второй выборки COPY TO <FileName> DELIMITED WITH ";"
Потом lcFile=FILETOSTR(<FileName>), дописываешь заголовок и
STRTOFILE(lcFile,<FileName>).
...
Рейтинг: 0 / 0
10.12.2004, 14:07
    #32823240
AiSK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
Не знаю, может слишком просто кажется и есть какой-то сложный момент , но

IF FILE('A:\...файл на дискете')
glfile = FOPEN(''A:\...файл на дискете',12)
ELSE
glfile = FCREATE(''A:\...файл на дискете')
ENDIF
IF glfile < 0
WAIT 'Не могу открыть файл ... для записи ' WINDOW NOWAIT
ELSE

=FWRITE(glfile,СТРОКА+CHR(13))
* можно использовать и FPUTS() – записывает строку в файл и добавляет
*в конец перевод строки
* Для вставки разрывов используйте CHR(13)

=FCLOSE(glfile)

ENDIF

Если под форматирование имеете в виду вставку точек с запятой, то посмотрите символьные функции
http://www.foxhelp.ru/FunkciiVFP678?v=1e64
...
Рейтинг: 0 / 0
10.12.2004, 15:22
    #32823476
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
SET TEXTMERGE (TO, ON) и TEXT, ENDTEXT, /, //

SET PRINTER (TO, ON) и ?, ??
...
Рейтинг: 0 / 0
10.12.2004, 15:37
    #32823533
alex_dch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
IF FILE('c:\vygruzka.txt')
glfile = FOPEN('c:\vygruzka.txt',12)
ELSE
glfile = FCREATE('c:\vygruzka.txt')
ENDIF
IF glfile < 0
WAIT ' не могу писать в файл.. ' WINDOW NOWAIT
ELSE

=FWRITE(glfile,'Название+CHR(13))
=FWRITE(glfile,'12 июня 2001 г.'+CHR(13))
=FWRITE(glfile,'îòäåëåíèå "Àëåêñååâñêîå"'+CHR(13))
=FWRITE(glfile,'R' + ';' + 'VE' + CHR(13))
=FWRITE(glfile,'RUB' + CHR(13))
=FWRITE(glfile,CHR(13))


=FCLOSE(glfile)

ENDIF

для составления первого блока все замечательно работает!
как теперь забирать значения из курсора, для составления
второго блока??

спасибо за ссылочку на фоксхелп, отличный ресурс!

а еще что делать с кодировкой при копировании из фокса,
некоторые зюки оставил в коде, чтоб было видно о чем я
...
Рейтинг: 0 / 0
10.12.2004, 16:42
    #32823766
alex_dch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
... собственно низ запроса который курсор формирует

into cursor crsVygruz ;
where fc.enddate >= dd1 and not deleted() ;
order by surname, firstname, secondname



IF FILE('c:\vygruzka.txt')
glfile = FOPEN('c:\vygruzka.txt',12)
ELSE
glfile = FCREATE('c:\vygruzka.txt')
ENDIF
IF glfile < 0
WAIT 'не могу открыть файл.. ' WINDOW NOWAIT
ELSE

=FWRITE(glfile,'Íàèìåíîâàíèå îðãàíèçàöèè'+CHR(13))
=FWRITE(glfile,'12 èþíÿ 2001 ã.'+CHR(13))
=FWRITE(glfile,'îòäåëåíèå "Àëåêñååâñêîå"'+CHR(13))
=FWRITE(glfile,'R' + ';' + 'VE' + CHR(13))
=FWRITE(glfile,'RUB' + CHR(13))
=FWRITE(glfile,CHR(13))

select crsVygruz
go top

scan
=FWRITE(glfile,allt(surname)+ ';' + allt(firstname)+ ';' + allt(secondname) + CHR(13))
endscan

ENDIF
=FCLOSE(glfile)



собственно вот так и все работает!
сам допер! :))
но все равно всем спасибо!
...
Рейтинг: 0 / 0
10.12.2004, 16:45
    #32823773
alex_dch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
А с кодировкой при копировании всетаки можно что-то сделать????
...
Рейтинг: 0 / 0
10.12.2004, 16:48
    #32823782
AiSK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
для составления первого блока все замечательно работает!
как теперь забирать значения из курсора, для составления
второго блока??


Для составления второго блока не закрывайте файл командой
=FCLOSE(glfile) (Только в конце работы). Переключаетесь для работы с курсором в его рабочую область SELECT ом (подозреваю. что в курсор выводите информацию для второго блока) и последовательно сканируете его
SELECT ИмяКурсора

SCAN
SCATTER MEMVAR
*обрезаете ALLTRIM-ом строковые переменные (не забудьте сконвертировать *нестроковые переменные функцией STR)
*
m.СТРОКА=m.(ALLTRIM(имена полей курсора - поле 1))+';'+ ;
m.(ALLTRIM(имена полей курсора - поле 2))+... и так далее
=FWRITE(glfile,m.СТРОКА+CHR(13))
ENDSCAN

=FCLOSE(glfile)


а еще что делать с кодировкой при копировании из фокса,
некоторые зюки оставил в коде, чтоб было видно о чем я

Вы , может , просматривает файл в DOS кодировке (кстати , спросите у банка, текстовый файл в какой кодировке?). В любом случае воспользуйтесь функцией CPCONVERT
Скорее всего , вам нужно
m.СТРОКА=CPCONVERT(1251,866,m.СТРОКА)
...
Рейтинг: 0 / 0
10.12.2004, 16:54
    #32823801
alex_dch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
ну я почти так и сделал..

только с подстановкой наверно более профессионально?

SCAN
SCATTER MEMVAR
*обрезаете ALLTRIM-ом строковые переменные (не забудьте сконвертировать *нестроковые переменные функцией STR)
*

m.СТРОКА=m.(ALLTRIM(имена полей курсора - поле 1))+';'+ ;
m.(ALLTRIM(имена полей курсора - поле 2))+... и так далее


=FWRITE(glfile,m.СТРОКА+CHR(13))
ENDSCAN

=FCLOSE(glfile)
...
Рейтинг: 0 / 0
10.12.2004, 17:02
    #32823828
AiSK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
m.СТРОКА=m.(ALLTRIM(имена полей курсора - поле 1))+';'+ ;
m.(ALLTRIM(имена полей курсора - поле 2))+... и так далее

Ошибся маленько
ALLTRIM(m.имена полей курсора - поле 1))...

SCATTER MEMVAR просто потому, что удобнее писать возможные манипуляции
(преобразование типа данных и т.д.) с переменными , а не полями
...
Рейтинг: 0 / 0
10.12.2004, 17:26
    #32823911
alex_dch
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
select crsVygruz
SCATTER MEMVAR
go top


scan
m.stroka = allt(m.surname)+ ';' + allt(m.firstname)+ ';' + allt(m.secondname)
=FWRITE(glfile,m.stroka + CHR(13))
endscan

ENDIF
=FCLOSE(glfile)

если делаю так, то пишет только 2 кавычки, а поля пустые
а если
m.stroka = allt(m.surname)+ ';' + allt(m.firstname)+ ';' + allt(m.secondname)
до "скана" то заполняет полько первым значением, и это понятно..


а еще научите как выделять в прямоугольник текст в форуме, чтоб отделить
важное
...
Рейтинг: 0 / 0
10.12.2004, 18:11
    #32824050
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
если не ошибаюсь то можно еще и так
scan
FPUTS(glfile,allt(m.surname)+ ';' + allt(m.firstname)+ ';' + allt(m.secondname))
endscan
...
Рейтинг: 0 / 0
10.12.2004, 18:15
    #32824060
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
все дело в префиксе m.

select crsVygruz
scan
fputs(glfile,allt(crsVygruz.surname)+ ';' + allt(crsVygruz.firstname)+ ';' + allt(crsVygruz.secondname))
endscan
=FCLOSE(glfile)

go top - для scan необязательно
сразу не въехал
...
Рейтинг: 0 / 0
10.12.2004, 18:35
    #32824102
AiSK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
select crsVygruz
SCATTER MEMVAR
go top


scan
m.stroka = allt(m.surname)+ ';' + allt(m.firstname)+ ';' + allt(m.secondname)
=FWRITE(glfile,m.stroka + CHR(13))
endscan

ENDIF
=FCLOSE(glfile)

если делаю так, то пишет только 2 кавычки, а поля пустые
а если
m.stroka = allt(m.surname)+ ';' + allt(m.firstname)+ ';' + allt(m.secondname)
до "скана" то заполняет полько первым значением, и это понятно..

1) При SCAN не нужен GO TOP
2) SCATTER MEMVAR внутри цикла сканирования (должен повторяться), а не один раз в начале. Команда преобразует поля в переменные ( для удобства чтобы не путать с названиями полей переменные начинаются на m.)



а еще научите как выделять в прямоугольник текст в форуме, чтоб отделить
важное


Пользуйся кнопками QUOTE (помещая текст цитаты между парами появляющихся скобок) или чтобы выделить блок кода кнопкой SRC
...
Рейтинг: 0 / 0
10.12.2004, 18:44
    #32824120
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
насчет кодовой страницы
select crsVygruz
scan
fputs(glfile,cpconvert(1251,866,allt(crsVygruz.surname)+ ';' + allt(crsVygruz.firstname)+ ';' + allt(crsVygruz.secondname)))
endscan
...
Рейтинг: 0 / 0
11.12.2004, 03:42
    #32824393
MaestroEv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать такой текстовый файл??
И ведь предлогал тебе Urri солидное стройное решение...

Set Textmerge On
Set textmerge to (файл) additive

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


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