Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Acc97: Help! Запутался с датами. Помогите!
 
 автор: al69   (25.03.2010 в 19:03)   личное сообщение
 
 

Всем доброго времени суток. Бьюсь уже неделю, мозги совсем закипели. Есть таблица Сотрудники. В ней есть поля: ФИО, процент1, процент2, дата_изменения.
Где ФИО это инициалы человека, процент1 - это процент от одного вида вала, процент2 - процент от другого вида вала, дата_изменения - с какой даты действуют эти проценты.

ФИО процент1 процент2 дата_изменения
Смирнов 15 10 01.01.2010
Смирнов 10 15 01.03.2010

Зарплата всегда рассчитывается за календарный месяц, то есть берется начальная дата расчетного месяца и конечная дата расчетного месяца. Как сделать что бы проценты брались из таблицы в зависимости от даты календарного месяца и даты изменения? Делал цикл по таблице, но блин совсем запутался.

  Ответить  
 
 автор: Анатолий (Киев)   (25.03.2010 в 19:28)   личное сообщение
 
 

1. Создайте и сохраните Запрос1 с группировкой по ФИО, Max(дата_изменения) As дата_изменения и WHERE дата_изменения <= [конечная дата расчетного месяца]. Он возвратит вам для каждого ФИО самую свежую дату.
2. Создайте Запрос2, в котором свяжите Таблицу и Запрос1 по полям ФИО и дата_изменения. Он вернет вам желаемое

  Ответить  
 
 автор: al69   (25.03.2010 в 19:42)   личное сообщение
 
 

ОК, сейчас попробую. О результатах отпишусь

  Ответить  
 
 автор: al69   (25.03.2010 в 20:17)   личное сообщение
 
 

Не получается. Набил в таблицу 4 записи с изменением процентов с шагом изменения в один месяц. И первый и второй запросы выдают по две записи. А если шаг изменения будет в 2 месяца?

  Ответить  
 
 автор: Анатолий (Киев)   (26.03.2010 в 11:14)   личное сообщение
 
 

Запрос1:
SELECT Таблица1.ФИО, Max(Таблица1.дата_изменения) AS дата_изменения
FROM Таблица1
WHERE (((Таблица1.дата_изменения)<=[конечная дата расчетного месяца]))
GROUP BY Таблица1.ФИО;

Запрос2:
SELECT Таблица1.*
FROM Таблица1 INNER JOIN Запрос1 ON (Таблица1.дата_изменения = Запрос1.дата_изменения) AND (Таблица1.ФИО = Запрос1.ФИО);

Проверено.

  Ответить  
 
 автор: al69   (26.03.2010 в 15:59)   личное сообщение
 
 

Сейчас попробую, только до компа добрался

  Ответить  
 
 автор: al69   (26.03.2010 в 16:44)   личное сообщение
 
 

Все, спасибо огромное, разобрался. Вроде заработало все как надо.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList