powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro 2.5, вопрос
8 сообщений из 8, страница 1 из 1
FoxPro 2.5, вопрос
    #32995814
Lionzi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Прошу вашей помощи. В фоксе шарю плохо.

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

Также есть подпрограмма написаная предыдущим программером на фоксе.

И так:

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

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


Подпрограмма, делает выборку по нужным кодам,табюельным номерам, к примеру 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

Заранее благодарен, Александр.
...
Рейтинг: 0 / 0
FoxPro 2.5, вопрос
    #32995885
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LionziИ так:

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

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


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

Если надо исправить в таблице, то:
Код: plaintext
1.
2.
3.
SELECT My_tab
REPLACE sum WITH IIF(My_tab.perem_kod= 19 ,sum* 0 . 666 ,sum* 0 . 5 ) ;
        FOR My_tab.perem_kod= 19  OR My_tab.perem_kod= 21 
GO TOP
...
Рейтинг: 0 / 0
FoxPro 2.5, вопрос
    #32995897
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если выборку, то:
Код: plaintext
1.
2.
3.
SELECT tabn, perem_kod, IIF(perem_kod= 19 ,sum* 0 . 666 ,IIF(perem_kod= 21 ,sum* 0 . 5 ,sum)) as sum ;
  FROM My_tab ;
  WHERE My_tab.tabn = <tn> ;
  INTO CURSOR <Cur_my1>
...
Рейтинг: 0 / 0
FoxPro 2.5, вопрос
    #32995934
Lionzi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мая база prirab_r
В нее копируются данные из другой базы.

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

как мне кажется, это можно сделать где-то сдесь. но, ничего не понимаю...

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
...
Рейтинг: 0 / 0
FoxPro 2.5, вопрос
    #32996037
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lionzi
Надо четко представлять твою задачу. Твои таблицы. И что нужно получить в результате. А это ты нам и не представил. Мы видим только код какой-то программы.
...
Рейтинг: 0 / 0
FoxPro 2.5, вопрос
    #32996089
Lionzi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача такая.

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

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

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

Могу выслать на мыло саму программу оригинал, и таблицу из которой она берет данные, в общем около 800 Kb.
...
Рейтинг: 0 / 0
FoxPro 2.5, вопрос
    #32996203
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lionzi
Могу выслать на мыло саму программу оригинал, и таблицу из которой она берет данные, в общем около 800 Kb.
Высылай:
vlad@tec14.permenergo.ru
Но результат скорее завтра. Срочная работа настает.
...
Рейтинг: 0 / 0
FoxPro 2.5, вопрос
    #33043820
Думается мне, что вот здесь:
Код: plaintext
1.
2.
3.
4.
5.
6.
sele prirab_r
*!* вместо этой строки:
*!* repl zp with zp+zp.sum
*!* вот эту:
repl zp with zp+ iif(zp.perem_kod= 19 ,zp.sum* 0 . 666 ,iif(zp.perem_kod= 21 ,zp.sum* 0 . 5 ,zp.sum))
sele zp
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro 2.5, вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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