Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2012, 11:56   #11
*stRong*
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 47
По умолчанию

Цитата:
А выложи ка свои таблицы сюдыть...
http://file.qip.ru/file/EhL0XmRj/Tables.html

Цитата:
ас сплошная путаница c рабочими областями и использованием псевдонимов в функциях и командах. С фоксом давно не работал, CREATE TABLE кажется меняет рабочую область, тогда следующая команда по ней отрабатывает, а не по рабочей области 1. В результате сразу выход из цикла.
Возможно что-то и напутал, но пока не вижу где. Команда REPLACE и должна работать с активной таблицей Zp, разве нет?
*stRong* вне форума Ответить с цитированием
Старый 26.01.2012, 12:04   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Посмотрите в справке как управлять алиасами в командах и функциях, которые вы используете
Код:
CREATE TABLE Zp (Fio C(15), oklad n(6), prem n(6), itogo n(7))  стала активной Zp
 do while not eof()   проверка на Eof именно Zp, а что надо?
  APPEND BLANK
  aprem=iif(A.staj<5,oklad/2,iif(A.staj>5 and  A.staj<10,oklad*2/3,oklad))
   REPLACE fio WITH A.fio, oklad WITH shtat.oklad, Prem  WITH aprem,itogo WITH aprem+oklad
  SKIP    Переход на следующую по Zp, а что надо?
 ENDDO
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.01.2012, 12:12   #13
*stRong*
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 47
По умолчанию

Аватар, спс, понял) сейчас попробую исправить
*stRong* вне форума Ответить с цитированием
Старый 26.01.2012, 13:15   #14
*stRong*
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 47
По умолчанию

Stilet, Аватар, спасибо вам за помощь, с программой разобрался, все работает) Тему можно закрыть.
*stRong* вне форума Ответить с цитированием
Старый 26.01.2012, 13:16   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Рабочий вариант:
Код:
CLOSE DATABASES
USE shtat IN 1
USE sotrud IN 2
CREATE TABLE Zp (Fio C(15), oklad n(6), prem n(6), itogo n(7)) 
 do while not eof("sotrud")  
  APPEND BLANK
  aprem=iif(sotrud.staj<5,oklad/2,iif(sotrud.staj>5 and  sotrud.staj<10,oklad*2/3,oklad))
   REPLACE fio WITH sotrud.fio, oklad WITH shtat.oklad, Prem  WITH aprem,itogo WITH aprem+oklad
  SKIP 1 IN "sotrud"
 ENDDO
Цитата:
*stRong*
Ану похвастайся решением
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2012, 13:34   #16
*stRong*
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 47
По умолчанию

Хоть я и не совсем разобрался с вашим кодом, но основную идею я уловил, и сделал на ее основе свой вариант с использованием массивов, который выглядит так:

Код:
close tables
SELECT 1
USE sotrud
INDEX ON dol TO dol
SELECT 2
USE shtat
SET RELATION TO dol INTO 1
N=0   //кол-во сотрудников
DO WHILE NOT EOF ("sotrud")
 N=N+1
 skip 1 IN "sotrud"
ENDDO

dimension mas1 (N,5)
COPY TO ARRAY mas1 FIELDS A.fio, A.staj, B.oklad

FOR i=1 TO N 

IF mas1(i,2)<5 
mas1(i,4) = mas1(i,3)*0.5
ENDIF
IF mas1(i,2)>5 and mas1(i,2)<10
mas1(i,4)=mas1(i,3)*0.75 
ENDIF
IF mas1(i,2)>10
mas1(i,4)=mas1(i,3) 
ENDIF
mas1(i,5)=mas1(i,3)+mas1(i,4)
ENDFOR

create table zarplata (fio C(15), staj N, oklad N10, prem N10, itog_zarp N10)
APPEND FROM ARRAY mas1  FIELDS fio, staj, oklad, prem, itog_zarp
*stRong* вне форума Ответить с цитированием
Старый 26.01.2012, 14:02   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
N=0 //кол-во сотрудников
DO WHILE NOT EOF ("sotrud")
N=N+1
skip 1 IN "sotrud"
ENDDO
Заменяется на RECCOUNT("sotrud");
А так в принципе норм.

P.S. Кстати в моем решении нет SET RELATION и прохода по второй таблице... Забыл за него
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Представления в Visual FoxPro Studbgc Помощь студентам 0 27.12.2011 13:00
Visual FoxPro nulyjarden Помощь студентам 2 14.04.2011 15:08
БД по Visual FoxPro? iron_cross Помощь студентам 0 01.12.2010 09:19
база в Visual FoxPro NoHeart Фриланс 1 02.03.2010 15:19
Microsoft Visual foxPro Datetime Зайцев Александр Помощь студентам 1 01.02.2010 16:56