Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Создание БД в Microsoft Access

Екатерина Бутенко Знаток (394), открыт 4 недели назад
Есть задание: Описание предметной области (Ресторан). Посетители ресторана обслуживаются за столиками. За одним столом может располагаться не более 4 посетителей, каждый из которых может сделать заказ тех или иных блюд. Столики обслуживают официанты. У одного официанта в обслуживании несколько столов.
Как сделать так, что бы у стола было ограничение на 4 посетителей в Access?
1 ответ
Professional Professional Мудрец (15729) 4 недели назад
В Microsoft Access нет встроенного механизма для ограничения количества записей в подчиненной таблице. Однако, вы можете использовать SQL-запросы и макросы, чтобы реализовать это ограничение. Вот один из способов, как это можно сделать:

1. **Создайте необходимые таблицы**:
- **Таблица `Столики`**:
- `СтолID` (Primary Key)
- `ОфициантID` (Foreign Key)
- **Таблица `Посетители`**:
- `ПосетительID` (Primary Key)
- `СтолID` (Foreign Key)
- Другие поля (например, Имя, Заказ и т.д.)
- **Таблица `Официанты`**:
- `ОфициантID` (Primary Key)
- Другие поля (например, Имя и т.д.)

2. **Создайте форму для ввода посетителей**:
- Создайте форму на основе таблицы `Посетители`.

3. **Добавьте макрос, проверяющий количество посетителей**:
- Откройте форму в режиме конструктора.
- В свойствах формы найдите событие `Before Insert` и добавьте следующий макрос:

```vba
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim CountVisitors As Integer
CountVisitors = DCount("*", "Посетители", "СтолID = " & Me.СтолID)
If CountVisitors >= 4 Then
MsgBox "У этого стола уже есть 4 посетителя. Выберите другой стол.", vbExclamation
Cancel = True
End If
End Sub
```

Этот макрос проверяет количество записей в таблице `Посетители`, связанных с определенным столом, перед добавлением новой записи. Если количество записей достигло 4, макрос выводит сообщение и отменяет добавление новой записи.

Таким образом, при попытке добавить пятого посетителя к столу, макрос предотвратит это и уведомит пользователя о превышении лимита.
Похожие вопросы