Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > FoxPro 2.5 вопрос импорт


Автор: lionzi 4.4.2005, 09:36
Здравствуйте. Прошу вашей помощи. В фоксе шарю плохо.

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

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

И так:

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

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

Заранее благодарен, Александр.

Автор: Кащей 5.4.2005, 23:29
Цитата(lionzi @ 4.4.2005, 09:36)
Как можно сделать так, что если perem_kod = 19, то сумма умнажается на 0,666, если 21 то на 0,5, а все остальные считает без изменений?


Если у вас нет исходного кода, то я плохо себе представляю как вы собираетесь менять алгоритм программы smile
Если же вы собираетесь сделать дополнительную обработку данных из базы, то пишите скрипт на цикле scan и внутри него просто сравнивайте через if значение поля и соответственно умножайте или не умножайте сумму на коэффициент

Автор: bas 7.6.2005, 15:30
Если у вас есть FoxPro 2.5 то можете составить запрос типа
Код

select iif(perem_kod = 19, perem_kod*0.666,perem_kod)  from kkk

Автор: fevdokimov 1.7.2005, 12:54
Если программа написана на FoxPro, то для получение исходников попробуй воспользоваться ReFox 8-й версии(бесплатна??!!??), иногда помогает

Автор: Фоксик 11.10.2005, 13:21
smile У меня похожая проблемма! Может быть сможете мне помочь? Есть программа на Foxе без исходников, есть куча связанных между собой таблиц. Можно ли добавлять и удалять записи в эти таблицы не из родной программы, а из другой, но так, чтобы потом родная прога их понимала? smile

Автор: Cashey 11.10.2005, 21:09
Цитата
Можно ли добавлять и удалять записи в эти таблицы не из родной программы, а из другой, но так, чтобы потом родная прога их понимала?

Можно, только осторожно и обязательно надо что бы версии фокса были одинаковые

Автор: Dimchik 14.10.2005, 04:59
Цитата
Можно ли добавлять и удалять записи в эти таблицы не из родной программы, а из другой, но так, чтобы потом родная прога их понимала? smile

конечно можно под VFP прекрасно добавляются и удаляются записи которые потом FOX2.5 прекрасно переваривает
только наоборот нельзя т.к. DOS не понимает Visual

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)