Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: Krusz
Есть таблица (во вложении).
вначале, что за столбцы.
код - обычный счетчик
сотрудник - сюда записывается код из таблицы сотрудники
Номер - сюда записывается код из таблицы телефонов.
Действие - принимает два значения (выдача/сдача) (выдается телефон или сдается определенным сотрудником)
Дата заявления - (дата акта приема или сдачи телефона)
kod - сюда записывается код из этой же таблицы. по правилу: код - соответствует записиы выдаваемому/сдаваемому сотруднику определеенный телефон, что бы связать две записи (выдачи и сдачи телефона одинм сотрудником).
и получается, что поле kod будет пустым если телефон выдан, но еще не сдан.

телефон дпусти с кодом 67 заводится в базу попадает в резерв. т.е получается строчка
для резерва тоже есть определенный код пустьбудет 1.

код | kod | сотрудник | номер | действие | дата заявления
1 |____| 1 | 67 | выдача | 02/02/2011


далее есть необходимость выдать телефон новому сотруднику (пусть будет код = 3)
но для того чтобы выдать телефон сотруднику нужно его вывести из резерва. дата заявления вывода из резерва будет равна дате выдачи сотруднику. т.е. получается еще две строчки, а так же в первую строчку записываем в поле kod код строки вывода из резерва, а в строку кода вывода из резерва записываем код ввода в резерв. т.е получаем в конечном этоге 3 записи.

код | kod | сотрудник | номер | действие | дата заявления
1 | 2 | 1 | 67 | выдача | 02/02/2011
2 | 1 | 1 | 67 | сдача | 01/03/2011
3 | ____| 3 | 67 | выдача | 01/03/2011


теперь нужно сдать телефон сотрудником обратно в резерв. по подобию ситуации описанной выше получаем следующее

код | kod | сотрудник | номер | действие | дата заявления
1 | 2 | 1 | 67 | выдача | 02/02/2011
2 | 1 | 1 | 67 | сдача | 01/03/2011
3 | 4 | 3 | 67 | выдача | 01/03/2011
4 | 3 | 3 | 67 | сдача | 05/06/2011
5 |____| 1 | 67 | выдача | 05/06/2011


ну и т.д. все это работает все это заносится и вроде быпроблем нет. информация сохраняется

теперь втала задача сделать запрос выбрать всех сотрудников, кто пользовался телефоном в определенный меся и год.

пока решил это с помощью нескольких запросов.

1. первый запрос я делаю из этой таблицы всех записей соответсвующие условию [дата заявления] <= последнее число интересующего месяца определеннго года и действие=выдача
2. второй запрос я делаю из этой же таблицы всех записей [дата заявления] < первое число интересующего месяца определеннго года и действие=сдача
3. третий запрос: выбираю все поля из первого запроса и только тех записей из вторго запроса где код первого запроса совпадает с kod второго запрса и ставлю фильтр kod второго запроса в результирующей тбалице равен null и получаю список сотрудников, котрые пользовались телефонами в определенный месяц.
+ делаю еще несколлько запросов, что бы вывести один столбец выдан, второй столбец сдан

может можно как то проще сделать запрос?

P.S. прошу прощения за такой большой текст и сумбур. если уйдет сообщение в off тоже пойму


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.