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

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

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

Восстановить пароль
Повторная активизация e-mail

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

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

Добрый вечер, учусь создавать БД на VFP. Столкнулся с такой задачей: Нужно создать базу данных, в которой имеется 2 таблицы:
1)Сотрудники(фио, номер, должность, стаж)
2)Штат(должность, оклад)

Исходя из этих двух таблиц нужно сформировать третью - Зарплата(Фио, оклад, премия, итоговая зарплата)

Зарплата= оклад + премия. Премия зависит от стажа работы: до 5 лет - 50% от оклада, от 5 до 10 -75%, 10 и более - 100%

Две таблицы (сотруд. и штат) я создал и связал, теперь не могу понять каким образом сформировать третью таблицу? Может есть идеи как решить данную задачку?

P.S. задачу нужно решить без SQL-команд, только средствами языка FoxPro.
*stRong* вне форума Ответить с цитированием
Старый 25.01.2012, 21:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
задачу нужно решить без SQL-команд, только средствами языка FoxPro.
По твоему Select не является командой Фокспро? Чем SQL не угодил? Это же сердце Фокспро, без него нет смысла работать с базами.
Впрочем тебе нужно изучить команду SET RELATION.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.01.2012, 21:54   #3
*stRong*
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 47
По умолчанию

Цитата:
По твоему Select не является командой Фокспро? Чем SQL не угодил? Это же сердце Фокспро, без него нет смысла работать с базами.
Впрочем тебе нужно изучить команду SET RELATION.
SET RELATION я и так использовал для связи таблиц, SELECT тоже использовал для выделеия области под таблицу, но третью таблицу я получить не могу...
Цитата:
Чем SQL не угодил?
Мне он ничего плохого не сделал) Преподаватель сказал, что использовать только те команды,не используя SQL запросы, которые были даны на лекциях, на лекциях мы изучали циклы, ветвления, массивы, способы связи таблиц.

Есть идеи какие-нибудь? Буду очень благодарен.

Последний раз редактировалось Stilet; 25.01.2012 в 22:36.
*stRong* вне форума Ответить с цитированием
Старый 25.01.2012, 22:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может есть идеи как решить данную задачку?
Хм... С потолка, ибо твоих таблиц у меня нет:
Код:
CREATE TABLE Zp (Fio C(50), oklad n(5,2), prem n(5,2), itogo n(7,2))
while not eof(sotrudn)  
   APPEND BLANK
   aprem=iif(sotrudn.stag<5,oklad/2,iif(sotrudn.stag>5 and  sotrudn.stag<10,oklad*2/3,oklad))
   REPLACE fio WITH sotrudn.fio, oklad WITH stat.oklad, Prem  WITH aprem,itogo WITH aprem+oklad
   skip(sotrudn); 
ENDFOR
Ито это еще нужно попробовать, я давно уже на таком уровне с Лисичкой не работал, всего не упомню.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.01.2012, 23:04   #5
*stRong*
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 47
По умолчанию

Stilet, спс, но в строчке while not eof(sotrud) вылетает ошибка unrecognized command verb. Видимо синтаксис неверый, искал в чем ошибка - не нашел Может вы знаете как это исправить?

Так, с этим разобрался, правильная запись DO WHILE NOT EOF, но теперь ругается "Variable 'SOTRUD' not found", видимо пытается принять имя таблицы за имя переменной, есть мысли, как это подкорректировать?

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

Дык вставь в параметр EOF имя таблицы сотрудников. Или Алиас. Смотря как ты ее открываешь.
Загляни в хелп фокса - там примеры есть по работе циклов и проходе по таблице.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2012, 00:29   #7
*stRong*
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 47
По умолчанию

Цитата:
Дык вставь в параметр EOF имя таблицы сотрудников. Или Алиас. Смотря как ты ее открываешь.
Это понятно, но выдается ошибка, ели что-то в скобках пишу.

Вот что получилось (а точнее не получилось, код ошибок не выдает, но в таблицу с зарплатой ничего не записывается)

Мои таблицы: [IMG][/IMG]

Вот получившийся код:
Код:
close tables
SELECT 1
USE sotrud
INDEX ON dol TO dol
SELECT 2
USE shtat
SET RELATION TO dol INTO 1


CREATE TABLE Zp (Fio C(15), oklad n(6), prem n(6), itogo n(7))
do while not eof()
  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
 ENDDO
Помогите разобраться, по какой причине данные не записываются в новую таблицу?
*stRong* вне форума Ответить с цитированием
Старый 26.01.2012, 10:18   #8
*stRong*
Пользователь
 
Регистрация: 25.01.2009
Сообщений: 47
По умолчанию

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

А выложи ка свои таблицы сюдыть...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2012, 11:23   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

У вас сплошная путаница c рабочими областями и использованием псевдонимов в функциях и командах. С фоксом давно не работал, CREATE TABLE кажется меняет рабочую область, тогда следующая команда по ней отрабатывает, а не по рабочей области 1. В результате сразу выход из цикла.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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