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 |
© 2000-2024 Fox Club  |