:: Visual Foxpro, Foxpro for DOS
fox 2.5, имопрт, операции по условию
Lionzi
Автор

Сообщений: 6
Дата регистрации: 25.11.2003
Здравствуйте. Прошу вашей помощи. В фоксе шарю плохо.

Есть программа, возможно на фоксе, доступа к исходжному коду нет, но все БД в его формате.

Существует таблица:

tabn perem_kod sum
168 4 100
168 19 300
168 21 1000
168 6 300

Задача такая.

Из уже существующей таблицы берутся данные, по номеру складываются, в дальнейшем над ними происходит ряд мат. операций. для получения коэфициента.

По приведенному мною примере модно сказать так:
Из основной таблицы по номеру 168 берется perem_kod равный последовательно 4,19,21,6 и складываются, получется сумма по номеру 168, в дальнейшем эту сумму умнажается на коэффициент и получают нужную сумму.

Проблема в том, что коды 19 и 21 берутся целиком, а надо чтобы была только часть их, т.е. коэф. 0,666 и 0,5 соответственно.


Подпрограмма, делает выборку по нужным кодам,табюельным номерам, к примеру 4 и 19.
Как можно сделать так, что если perem_kod = 19, то сумма умнажается на 0,666, если 21 то на 0,5, а все остальные считает без изменений?

func import
sele prirab_r
set filt to month=rmonth
if seek(str(rmonth,2)+' 1','prirab_r')
if .not.yes_no('Заменить уже существующие данные ?')
set filt to month=rmonth.and.uch=ruch.and.sh=rshifr
go top
retu
endif
endif
repl all zp with 0
go top
sele zp
for rshifr=1 to 3
do case
case rshifr=1
shifrs=control.collect
*Здесь прописаны коды, по которым нужно сделать выборку.

case rshifr=2
shifrs=control.carriage
case rshifr=3
shifrs=control.avizo
endcase
go top
scan for at(allt(str(perem_kod,3))+',',shifrs)#0
=seek(tabn,'card')
if .not.seek(str(rmonth,2)+str(otdel,2)+tabn+str(rshifr,1),'prirab_r')
sele prirab_r
appe blan
repl uch with zp.otdel, month with rmonth, tabn with zp.tabn, sh with rshifr, pp with 0, ktu with 1, pr with 0
endi
sele prirab_r
repl zp with zp+zp.sum
sele zp
ends
endf
sele prirab_r
rshifr=1
set filt to month=rmonth .and. uch=ruch .and. sh=rshifr
go top
retu
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 16 (Гостей: 16)

© 2000-2024 Fox Club 
Яндекс.Метрика