Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Трусей Владимир
0 / 0 / 0
Регистрация: 20.03.2019
Сообщений: 10
1

База Общежитие

21.03.2019, 07:01. Просмотров 2086. Ответов 17

Здравствуйте!

Очень нужна помощь.
Делаю базу общежитие, но не могу сделать поиск свободных комнат.
То ли знаний не хватает, то ли сама структура базы неправильная.
Пытаюсь определять свободные комнаты по дате выселения,
но в базе есть пустые поля (в комнате еще ни кто не жил).
И второй момент, отсеивая по дате выселения не могу учесть что в комнате уже кто то живет.

Спасибо за помощь. Буду рад любым советам.
0
Вложения
Тип файла: zip База общежитие.zip (98.9 Кб, 7 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2019, 07:01
Ответы с готовыми решениями:

Нужна база данных "общежитие"
нужна база данных общежитие Нужна схема данных Общежитие срочно, помогите пожалуйста

БД "Студенческое общежитие"
БД "Студенческое общежитие". Имеется таблица "Категория студента", там при помощи метода...

Подвисла сессия, одно поле удалено, база для чтения, непонятные проблемы разделенная база под терминалом remoteAPP
В общем есть сервер win 2008 R2 Enterprise Баз лежит на сервере к ней подключаются юзвери : на...

База данных "Общежитие" с интерфейсом
День добрый, суть задания, сделать бд "расселения студентов в общежитиях", допустим я сделал саму...

Общежитие
Задание: Общежитие. База данных блоков и комнат в общежитии. Заселение формируется по принципу...

17
Eugene-LS
3881 / 2236 / 423
Регистрация: 05.10.2016
Сообщений: 6,212
21.03.2019, 07:45 2
Цитата Сообщение от Трусей Владимир Посмотреть сообщение
Буду рад любым советам.
OK!
Ну первое, что попалося на мой критичный левый глаз:
Таблица: "Слушатель"
- Поля: "Телефон" и "Пол" по 255 символов длинной ...
Таблица:"Заселение"
- Поле: "Количество дней проживания" - не нужно! всегда можно рас читать по DateDif()
Таблицы: "Комната" и "Место"
- Отношение "Место" - один ко многим к "Комната" -0 а должно быть наоборот!
Связь: "Слушатель" - "Комната"
- "Слушатель" заселяется на "Место" а не на комнату - связь не верна

Думаю, пока достаточно.
Успехов!
1
VinniPuh
6515 / 3818 / 414
Регистрация: 27.03.2013
Сообщений: 14,054
21.03.2019, 08:04 3
Цитата Сообщение от Eugene-LS Посмотреть сообщение
..."Слушатель" заселяется на "Место"...
А если у места - двухспальное койко-место?
0
Трусей Владимир
0 / 0 / 0
Регистрация: 20.03.2019
Сообщений: 10
21.03.2019, 08:47  [ТС] 4
Первые два - согласен.
Относительно того, что местам принадлежат комнаты:
Это сделано из-за того, что есть 2, 3, 4, одноместные комнаты.
Комнаты все разные. Это имеет значение?
0
21.03.2019, 08:47
VinniPuh
6515 / 3818 / 414
Регистрация: 27.03.2013
Сообщений: 14,054
21.03.2019, 09:14 5
Цитата Сообщение от Трусей Владимир Посмотреть сообщение
...есть 2, 3, 4, одноместные комнаты....
Я бы сделал для табл. Комнаты - Подчиненную табл. - МестаКомнаты (типа справочника, где в поле - СтатусМеста, указывал Свободно или Занято, или Логическое поле. Если стоит Галочка, то занято.
1
Трусей Владимир
0 / 0 / 0
Регистрация: 20.03.2019
Сообщений: 10
21.03.2019, 09:20  [ТС] 6
Про галочки мысль приходила, но не знаю как реализовать снятие галочки, при наступлении даты выселения.
0
Eugene-LS
3881 / 2236 / 423
Регистрация: 05.10.2016
Сообщений: 6,212
21.03.2019, 09:25 7
Цитата Сообщение от VinniPuh Посмотреть сообщение
СтатусМеста, указывал Свободно или Занято, или Логическое поле. Если стоит Галочка, то занято.
Так вроде всегда можно рассчитать по датам заселения - выселения ...
Разве что ставить галку "Место готово к заселению!" - типа ... бельё сменяно, матрас просушен, одеяло обработано бадихлоратом калия и подушка взбита ... (прикроватная тумбочка очинена)

Добавлено через 1 минуту
Цитата Сообщение от Трусей Владимир Посмотреть сообщение
но не знаю как реализовать снятие галочки, при наступлении даты выселения.
На фиксации высерения - по кнопке ... процедура ... VBA (в пару строк)
Ибо то что на бумаге (в базе) не всегда соотв. реалиям жизни ...
0
VinniPuh
6515 / 3818 / 414
Регистрация: 27.03.2013
Сообщений: 14,054
21.03.2019, 09:27 8
Цитата Сообщение от Трусей Владимир Посмотреть сообщение
но не знаю как реализовать снятие галочки, при наступлении даты выселения.
Не совсем понял, но я обычно если снимаю галочку, то в поле - ДатаВыселения прописывается текущая дата, а не наоборот.
Что то типа

Visual Basic
1
2
Me.[ДатаВыселения] = Date
Me.[ВремяВыселения] = Time ()
если надо то и время.
0
Панург
Мы один, давай на "ты"
1730 / 769 / 165
Регистрация: 16.06.2016
Сообщений: 1,576
21.03.2019, 09:46 9
Цитата Сообщение от Eugene-LS Посмотреть сообщение
бадихлоратом калия
это что за новости в мире химии?
0
Трусей Владимир
0 / 0 / 0
Регистрация: 20.03.2019
Сообщений: 10
21.03.2019, 10:44  [ТС] 10
Имел ввиду, что при заселении указывается дата выселения.
Заселил - поставил галочку, галочка снимается сама при наступлении даты выселения.
Так можно сделать?
Иначе придется шерстить все комнаты и проверять соответсвие даты и галочки.
0
Eugene-LS
3881 / 2236 / 423
Регистрация: 05.10.2016
Сообщений: 6,212
21.03.2019, 11:02 11
Цитата Сообщение от Трусей Владимир Посмотреть сообщение
Так можно сделать?
Да! - Можно!
Можно вверх ногами, задом наперёд и наоборот.
У VBA большие возможности ...
0
VinniPuh
6515 / 3818 / 414
Регистрация: 27.03.2013
Сообщений: 14,054
21.03.2019, 11:17 12
Трусей Владимир, не особо понял, но скорее всего вам нужно прописать типа вот такой процедуры на событиях
Текущая запись формы
и
После обновления у Поля - ДатаВыселения
Visual Basic
1
2
3
4
5
6
7
8
Private Sub Form_Current()
  DoCmd.RunCommand acCmdRefresh
    If IsNull(Me.[ДатаВыселения]) Then
        Me.[ФлажокЗанято] = False
      Else
        Me.[ФлажокЗанято] = True
    End If
End Sub
Вогможно от вашей хотелки, придется поменять местами - True и False, плюс естественно указать - ИСТИНННЫЕ Имена поля и флажка.
Короче поиграйтесь на примере.
Пример не смотрел ибо не открылся.
0
Панург
Мы один, давай на "ты"
1730 / 769 / 165
Регистрация: 16.06.2016
Сообщений: 1,576
21.03.2019, 11:41 13
Цитата Сообщение от Трусей Владимир Посмотреть сообщение
Имел ввиду, что при заселении указывается дата выселения.
Заселил - поставил галочку, галочка снимается сама при наступлении даты выселения.
Так можно сделать?
Иначе придется шерстить все комнаты и проверять соответсвие даты и галочки.
Не изобретай всякой хрени. У тебя должна быть таблица соединяющая место и слушателя, скажем - "Проживание". В ней отмечается дата проживания от/до и конечно ключи Места и Слушателя. Всё.
Проверяешь в таблице "Проживание" сегодняшний день, найденные места заселены.

Добавлено через 4 минуты
Цитата Сообщение от Трусей Владимир Посмотреть сообщение
придется шерстить все комнаты
Это делается запросом

Добавлено через 4 минуты
Цитата Сообщение от VinniPuh Посмотреть сообщение
Комнаты - Подчиненную табл. - МестаКомнаты (типа справочника
Я бы сделал ровно наоборот - "Комнаты" всего лишь справочник
0
VinniPuh
6515 / 3818 / 414
Регистрация: 27.03.2013
Сообщений: 14,054
21.03.2019, 11:45 14
Цитата Сообщение от Панург Посмотреть сообщение
..."Комнаты" всего лишь справочник...
Я так и сказал.
- Здания,
- Комнаты,
- Места в них, всего лишь - СПРАВОЧНИКИ.
А вы чего подумали?
1
Панург
Мы один, давай на "ты"
1730 / 769 / 165
Регистрация: 16.06.2016
Сообщений: 1,576
21.03.2019, 11:58 15
Цитата Сообщение от VinniPuh Посмотреть сообщение
А вы чего подумали?
А я подумал про физику, которую всю так легко свести к непотребству.
0
Трусей Владимир
0 / 0 / 0
Регистрация: 20.03.2019
Сообщений: 10
22.03.2019, 09:17  [ТС] 16
Все указанное реализовано, запрос отлично ищет занятые места. Вопрос в том, как отразить незанятые?
Если это делать по дате выселения, как я и пытался, запрос находит все записи, когда в этой комнате кто то жил. Но в ней может еще и в настоящее время кто то жить. Плюс, комната может вообще ни разу не заселятся.

Как вариант, из общей таблицы мест, убрать занятые места. Подскажите, как это реализовать.

Добавлено через 1 час 38 минут
Скрипт не совсем подходит. Нужно повесить счетчик обратного времени на галочку, при окончании времени галочка убирается. Время рассчитывается из разницы дата прибытия - дата убытия.
0
Панург
Мы один, давай на "ты"
1730 / 769 / 165
Регистрация: 16.06.2016
Сообщений: 1,576
22.03.2019, 10:08 17
Лучший ответ Сообщение было отмечено Трусей Владимир как решение

Решение

Цитата Сообщение от Трусей Владимир Посмотреть сообщение
Все указанное реализовано, запрос отлично ищет занятые места. Вопрос в том, как отразить незанятые?
Что конкретно реализовано? По той таблице что я сказал в условии нужно проверить вхождение даты в интервал между вселением и выселением, отсюда если попадает в интервал место занято, если нет то свободное.

Занятые места
SQL
1
2
3
4
SELECT Места.КодМесто, Места.Номер, Места.КодКомната
FROM Места
WHERE Места.КодМесто IN (SELECT Проживание.КодМесто
FROM Проживание  WHERE  Проживание.ДатаВселения <=DATE() AND Проживание.ДатаВыселения>=DATE());
Свободные места
SQL
1
2
3
4
SELECT Места.КодМесто, Места.Номер, Места.КодКомната
FROM Места
WHERE NOT Места.КодМесто IN (SELECT Проживание.КодМесто
FROM Проживание  WHERE  Проживание.ДатаВселения <=DATE() AND Проживание.ДатаВыселения>=DATE());
1
VinniPuh
6515 / 3818 / 414
Регистрация: 27.03.2013
Сообщений: 14,054
22.03.2019, 23:16 18
И услышал, пребывая во сне своём благостном и благочестивом, (типа богатырь - ВинниПух) ,- стоны и причитания студиозов, учителями притесняемых, и непотребно, даже сверх меры, требующих знать знания преподаваемыемые.
Да и восстал он в гневе веиком, со своего лежбища, - Дивана любимого и шибко мягкого, сверхпушистого.
Взгромоздился на кресло , обзываемое людьми умными - "Компьютерное".
Нажал перстом указательным на кнопку волшебную, - "Включение" обзываемую.
И сотворил диво чудное - "Справочником мест в комнатах общежития" рекомое, предположив по наивности своей, что манускрипт сей, станет небольшим подспорьем ублажения взора злыдня - "Преподом" обзываемого, в кругах узких и шибко тайных.
2
Вложения
Тип файла: rar Здания-05 (Авто №,Помещ.Имущ.Места).rar (60.0 Кб, 4 просмотров)
22.03.2019, 23:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2019, 23:16

Настройка WI-FI через прокси, общежитие
Суть такова, живу в общежитии, сеть локальная через прокси, как настроить вай фай через прокси? В...

Работа с очередью, содержащей данные о заселении в общежитие
Разработать приложение, работающее с очередью, содержащей данные о заселении в общежитие. Элементом...

Структура общежитие, сделать комплексную сортировку по наличию балкона + по площади припадающей на 1 жителя
Такое задание: дана структура общежитие, сделать комплексную сортировку по наличию балкона + по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru