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

Форум: MS ACCESS

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

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

 
 

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

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

тема: помогите составить запрос "Перевод"
 
 автор: TimRus   (13.06.2010 в 20:47)   личное сообщение
59 Кб.
 
 

Здравствуйте помогите составить запрос который выбирает сотрудников, которые были переведены.
Перевод осуществляется следующим образом:
при переводе номер приказа имеет вид */2, то есть в конце стоит 2
при переводе сотрудник со старым табельным номером вносится в таблицы КадрыАрхив (номер приказа об увольнение */2) и Кадры(номер приказа о приеме */2)
сотрудник может несколько раз переводиться из подразделения в подразделение (это соответственно фиксируется в таблице КадрыАрхив)

Цель запроса вести историю переводов сотрудника.

  Ответить  
 
 автор: lulukyan   (13.06.2010 в 21:53)   личное сообщение
 
 

Что то вроде этого:

SELECT КадрыАрхив.ИНК, КадрыАрхив.ТабНомер, КадрыАрхив.КодШР, КадрыАрхив.КолСтавок, КадрыАрхив.ДатаС, КадрыАрхив.ДатаПо, КадрыАрхив.НомерПриказаПрием, КадрыАрхив.НомерПриказаУвол
FROM КадрыАрхив
WHERE (((Right([НомерПриказаПрием],1))=2)) OR (((Right([НомерПриказаУвол],1))=2));

  Ответить  
 
 автор: lulukyan   (13.06.2010 в 22:00)   личное сообщение
 
 

Или так, где есть последняя должность:
SELECT Кадры.ИНК, Кадры.ТабНомер AS LastТабНомер, Кадры.КодШР AS LastКодШР, КадрыАрхив.ТабНомер, КадрыАрхив.КодШР, КадрыАрхив.КолСтавок, КадрыАрхив.ДатаС, КадрыАрхив.ДатаПо, КадрыАрхив.НомерПриказаПрием, КадрыАрхив.НомерПриказаУвол
FROM Кадры LEFT JOIN КадрыАрхив ON Кадры.ИНК = КадрыАрхив.ИНК
WHERE (((Right([КадрыАрхив].[НомерПриказаПрием],1))=2)) OR (((Right([КадрыАрхив].[НомерПриказаУвол],1))=2));

  Ответить  
 
 автор: TimRus   (13.06.2010 в 22:26)   личное сообщение
 
 

Спасибо а можете на основе этого запроса помочь мне составить отчет где бы отображалась следующая информация
информация о прежнем месте работы
-категория
-подразделение
-должность
-оклад
-количество ставок
-табельный номер

информация о новом месте работы
-категория
-подразделение
-должность
-оклад
-количество ставок
-табельный номер

  Ответить  
 
 автор: Гоблин   (14.06.2010 в 00:30)   личное сообщение
 
 

А форма отчета? Тут дело сугубо индивидуальное.

  Ответить  
 
 автор: TimRus   (14.06.2010 в 00:34)   личное сообщение
 
 

Мне просто нужно, чтобы на одном листе в соответствии с выбранным табельным номером выводились данные о том откуда и куда перевели сотрудника

  Ответить  
 
 автор: lulukyan   (14.06.2010 в 03:34)   личное сообщение
 
 

Наверно что то вроде этого:

SELECT Кадры.ИНК, Last(Кадры.КодКатегории) AS newКодКатегории, Last(ШР.КодПодразделения) AS newКодПодразделения, Last(ШР.КодДолжности) AS newКодДолжности, Last(ШР.Оклад) AS newОклад, Last(Кадры.КолСтавок) AS newКолСтавок, Last(Кадры.ТабНомер) AS newТабНомер, Last(КадрыАрхив.КодКатегории) AS oldКодКатегории, Last(ШР_1.КодПодразделения) AS oldКодПодразделения, Last(ШР_1.КодДолжности) AS oldКодДолжности, Last(ШР_1.Оклад) AS oldОклад, Last(КадрыАрхив.КолСтавок) AS oldКолСтавок, Last(КадрыАрхив.ТабНомер) AS oldТабНомер
FROM (ШР RIGHT JOIN (Кадры LEFT JOIN КадрыАрхив ON Кадры.ИНК = КадрыАрхив.ИНК) ON ШР.КодШР = Кадры.КодШР) LEFT JOIN ШР AS ШР_1 ON КадрыАрхив.КодШР = ШР_1.КодШР
WHERE (((Right([КадрыАрхив].[НомерПриказаПрием],1))=2)) OR (((Right([КадрыАрхив].[НомерПриказаУвол],1))=2))
GROUP BY Кадры.ИНК;

  Ответить  
 
 автор: TimRus   (14.06.2010 в 09:26)   личное сообщение
 
 

Спасибо, lulukyan!!!! А можно сделать так чтобы просматривалась такая же история и по архиву. Сейчас мы можем видеть данные только о тех кто на данный момент работает.
Можно ли создать аналогичный запрос для отобора сотрудников из архива (т.е. с указанием информации о предыдущем и следующим местами работы), а затем с помощью UNION объединить эти два запрса

  Ответить  
 
 автор: lulukyan   (14.06.2010 в 15:28)   личное сообщение
 
 

Я как программист со стажем могу сказать: " В программировании нет ничего невозможного (с) " :-)
В этом запросе нужно включить таблицу КадрыАрхив два раза и связать поле НомерПриказаПрием одной с полем НомерПриказаУвол другой

  Ответить  
 
 автор: TimRus   (14.06.2010 в 15:39)   личное сообщение
 
 

А можете на примере показать, а то у меня же самое выдает. Заранее сасибо Вам!!!

  Ответить  
 
 автор: lulukyan   (14.06.2010 в 16:29)   личное сообщение
27 Кб.
 
 

см. в прикрепленном файле. Там два запроса Q1 и Q2 и один объединяющий их Qall

  Ответить  
 
 автор: TimRus   (14.06.2010 в 20:52)   личное сообщение
 
 

Спасибо!!!

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