powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Хитрый цикл по записям в FoxPro 2.6
3 сообщений из 3, страница 1 из 1
Хитрый цикл по записям в FoxPro 2.6
    #34450567
AlexanderKR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, как в Fox Pro 2.6 (dos)
можно сделать следующий цикл по записям.
Имеется таблица pokupki.dbf со следующими данными:

kod_pr DATE_SCH OSTATOK N_SCH
1003 31.01.2007 30000 4
1003 28.02.2007 20000 5
2001 31.01.2007 14000 6
2001 28.02.2007 500 7
2001 31.03.2007 500 8

Есть другая таблица kredit.dbf с такими данными:
kod_pr summa
1003 50000
2001 15000

Т.е. на каждое предприятие приходит определенная
сумма, которая гасит сложившуюся задолженность.
Все это должно отображаться в текстовом файле,
т.е. примерно так:
1003 50000-30000=20000 погашение счета 4 от 31.01.2007
20000-20000=0 погашение счета 5 от 28.02.2007
и т.д.

Начал я так:

select 3
use sys(2003)+"/kredit.dbf"
set order to kod_pr
goto top
scan
kod_pr1=alltrim(kod_pr)
summa1=summa

select 1
use sys(2003)+"/pokupki.dbf"
goto top
set filter to alltrim(kod_pr)=kod1 .and. pr1=0
locate for alltrim(kod_pr)=kod1
******* здесь нужен цикл по полю OSTATOK (до тех пор,
******* пока он не будет равен 0)
select 3
endscan
******************

Спасибо.
...
Рейтинг: 0 / 0
Хитрый цикл по записям в FoxPro 2.6
    #34451229
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А про вложенные циклы не рассказывали?

если в лоб, без оптимизации:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
use pokupki in  0  && sys( 2003 )+"/pokupki.dbf" - то же самое
sele  0 
use kredit
scan
  lnSum = kredit.summa
  sele pokupki
  scan for lnSum >  0  and pokupki.kod_pr = kredit.kod_pr
    if lnSum >= pokupki.ostatok
       ? pokupki.kod_pr, 'Оплата счета ', pokupki.n_sch
    else
       ? pokupki.kod_pr, 'Частичная оплата счета ', pokupki.n_sch
    endif
    lnSum = lnSum - pokupki.ostatok
  endscan
endscan

Только такой подход изначально ущербный
...
Рейтинг: 0 / 0
Хитрый цикл по записям в FoxPro 2.6
    #34451542
Dima TТолько такой подход изначально ущербный
Ущербный или нет, но очень часто так делают: одно предприятие платит другому определенную сумму, а другое производит авторазброс (приведенный фрагмент) суммы по долгам клиента.
Примером может служить оплата счета за услуги связи не по каждой услуге в отдельности, а одной общей суммой. Затем эта сумма "раскидывается" по оказанным клиенту услугам. Какие-то закрывает полностью, а какие-то частично...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Хитрый цикл по записям в FoxPro 2.6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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