powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro - запись значений в текстовый файл
8 сообщений из 8, страница 1 из 1
FoxPro - запись значений в текстовый файл
    #33997876
AlexanderKR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работаю на Fox Pro 2.6 (for MS-DOS). Есть таблица
с двумя колонками, в одной из которых повторяющиеся данные,
в другой - все разные, пример:
kod number
1011 500
1011 502
1011 511

Как бы мне вписать в текстовый файл через запятую
все значения number, которые соответствуют одному и
тому же kod`у. Пока имею вот что(выгоняет первое значение,
остальные игнорирует):

select 20
use &bank_file

do while .not. eof()
if kod = alltrim(nn1)
stroka1=alltrim(number)
endif
skip
enddo

set textmerge on
set textmerge to &im_f4
\<< stroka1 >>
set textmerge to
******************************************

Спасибо.
...
Рейтинг: 0 / 0
FoxPro - запись значений в текстовый файл
    #33997920
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
select number from  ... where kod=...
copy to ...

почитайте про команду copy to
...
Рейтинг: 0 / 0
FoxPro - запись значений в текстовый файл
    #33997932
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select  20 
use &bank_file

Stroka1=''
do while .not. eof()
 if kod = alltrim(nn1)
  if   !empty(Stroka1)
    stroka1=Stroka1+','+alltrim(number)
  else
    stroka1=alltrim(number)
  endif
 endif
skip
enddo
ну и далее по тексту
...
Рейтинг: 0 / 0
FoxPro - запись значений в текстовый файл
    #33997992
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, задача сводится к следующему:

Имеем данные вида:

1011 - 500
1011 - 502
1011 - 511

2000 - 600
2000 - 601
2000 - 602

Надо получить текстовый файл вида

1011 - 500, 502, 511
2000 - 600, 601, 602

Чтобы это сделать, для начала надо упорядочить данные по значению поля Kod, чтобы все записи с одним значением этого поля шли друг за другом. Это можно сделать либо через временный индекс, либо выборкой во временную таблицу (SELECT-SQL)

Далее уже сканируешь таблицу

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
set textmerge on
set textmerge to &im_f4

PRIVATE nextKod, stroka1
select MyTab
GO TOP
SCAN
	nextKod = MyTab.Kod
	stroka1 = AllTrim(MyTab.Kod)+" "
	select MyTab
	SCAN WHILE MyTab.Kod = m.nextKod
		stroka1 = m.stroka1 + ","+AllTrim(MyTab.number)
		select MyTab
	ENDSCAN
	SKIP - 1  IN MyTab

	* Запись очередной строки в текстовый файл
	\<< stroka1 >>

	select MyTab
ENDSCAN

set textmerge to

Если нужны значения только для одного известного значения поля Kod, то предварительное упорядочивание данных не нужно. Все делается проще

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
PRIVATE stroka1
stroka1 = ""
select MyTab
GO TOP
SCAN FOR MyTab.kod = alltrim(m.nn1) 
	nextKod = AllTrim(MyTab.Kod)
	stroka1 = m.stroka1+IIF(EMPTY(m.stroka1),"",",")+AllTrim(MyTab.number)
	select MyTab
ENDSCAN

set textmerge on
set textmerge to &im_f4
\<< stroka1 >>
set textmerge to
...
Рейтинг: 0 / 0
FoxPro - запись значений в текстовый файл
    #33998688
AlexanderKR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы абсолютно правильно поняли мою ситуацию,
но пример мне не подходит. Данные я упорядочу (индекс есть).
Но вот как вписать в файл значения через запятую,
не знаю.
Вот часть кода:
**********************************
stroka1=""
set textmerge on
set textmerge to &im_f4
do while .not. eof()
if substr(kod) = alltrim(nn1)
stroka1=alltrim(number)
endif
\<<stroka1>>
skip
enddo
set textmerge to
MODIFY COMMAND &im_f4
**********************************
Следующие данные:
1011 пп505
1011 пп506
1011 пп700
в текстовом файле появляются так:
пп505
пп506
пп700,
А мне бы нужно так: пп505, пп506, пп700.
Как изменить имеющийся код?
Спасибо.
...
Рейтинг: 0 / 0
FoxPro - запись значений в текстовый файл
    #33998785
AlexanderKRВы абсолютно правильно поняли мою ситуацию,
но пример мне не подходит. Данные я упорядочу (индекс есть).
Но вот как вписать в файл значения через запятую,
не знаю.
Вот часть кода:
**********************************
stroka1=""
set textmerge on
set textmerge to &im_f4
do while .not. eof()
if substr(kod) = alltrim(nn1)
stroka1=alltrim(number)
endif
\<<stroka1>>
skip
enddo
set textmerge to
MODIFY COMMAND &im_f4
**********************************
Следующие данные:
1011 пп505
1011 пп506
1011 пп700
в текстовом файле появляются так:
пп505
пп506
пп700,
А мне бы нужно так: пп505, пп506, пп700.
Как изменить имеющийся код?
Спасибо.
Блин, тебе же уже все разжевали... Но, если ты уперся в свой код, то тогда надо изменить так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
stroka1=alltrim(nn1)+" " && выводим значение кода в результирующую строку
set textmerge on
set textmerge to &im_f4
do while .not. eof()
  if alltrim(kod) == alltrim(nn1)    && ставим == для проведения точного сравнения символьных данных
    stroka1=stroka1+alltrim(number)+"," && добавляем очередное значение и ставим после него запятую
  endif
  skip
enddo
staroka1=substr(stroka1, 1 ,len(stroka1)- 1 ) && удаляем запятую у последнего значения в строке - она лишняя
\<<stroka1>>
set textmerge to
MODIFY COMMAND &im_f4
...
Рейтинг: 0 / 0
FoxPro - запись значений в текстовый файл
    #33998884
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexanderKR
А ты запускать приведенные примеры пробовал?
...
Рейтинг: 0 / 0
FoxPro - запись значений в текстовый файл
    #34001582
AlexanderKR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, все работает.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro - запись значений в текстовый файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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