SELECT Актер.Фамилия, Актер.Имя, Актер.Отчество, Роль.роль, Пьеса.Автор, Пьеса.Название, Спектакль.Дата_постановки
FROM (Пьеса INNER JOIN Роль ON Пьеса.КодПьесы = Роль.КодПьесы) INNER JOIN (Актер INNER JOIN Спектакль ON Актер.КодАктера = Спектакль.КодАктера) ON Роль.КодРоли = Спектакль.КодРоли
WHERE (((Спектакль.Дата_постановки)=Date()));
В качестве примера организации запросов выберем раздел Актер и потребуем, чтобы при таком выборе была предоставлена возможность выбора нескольких актеров, для того чтобы посмотреть их занятость в спектаклях. Это означает, что при выборе раздела Актер нажатие кнопки Просмотр, стоящей слева от группы, на экран будет выведена форма, позволяющая сделать множественный выбор актеров. После выбора актера (или группы) кнопка «Просмотр» позволяет вывести информацию о всех выделенных актерах. Форма «Занятость актеров в спектаклях» представлена на рис.11.
Обработка события: нажатие клавиши «Просмотр», приведена ниже
Private Sub Просмостр_Click()
Dim strWhere As String, varItem As Variant
‘ Если ни одна запись в списке lstAName не выбрана, то число выбранных элементов
‘ свойство ItemsSelected.Count, то есть число выбранных элементов, будет равен 0
‘ и сообщение об этом будет выведено с иконкой предупреждения - vbExclamation
If lstAName.ItemsSelected.Count = 0 Then
MsgBox "Вы не выбрали актеров", vbOKOnly + vbExclamation
Exit Sub
End If
‘ Организовывается цикл для формирования условий открытия формы «Актер»
‘ только для выбранных элементов списка lstAName, свойство ItemsSelected
‘ Свойство Column(0, varItem) списка lstAName содержит информацию о коде выбранного
‘ актера Нулевой столбец указанной строки. Код актера в список не выводится
‘ так как его ширина при построении задавалась 0
For Each varItem In lstAName.ItemsSelected
strWhere = strWhere & lstAName.Column(0, varItem) & ","
Next varItem
‘ Убираем последнюю лишнюю запятую
strWhere = Left$(strWhere, Len(strWhere) - 1)
‘ Формируем условия открытия формы «Актер»
WhereNstb = "[КодАктера] IN (" & strWhere & ")"
‘ Открытие формы «Актер» только для выделенных элементов.
DoCmd.OpenForm FormName:=”Актер”, WhereCondition:=WhereNstb
End Sub
Вид формы «Актер», открытый для выделенных на рисунке 11 записей (их 3), представлен на рис. 12.
Литература.
- Петров В.Н. Информационные системы. С.-П., Питер, 2002.
- Вейскас Дж. Эффективная работа с Microsoft Access 2000. С.-П., Питер, 2001.
- Новалис С. Access 2000. Руководство поVBA. М., Лори, 2001.
Содержание.
§ 1. Модели данных. Концептуальная схема . . . . 3
§ 2. Этапы разработки базы данных . . . . . 5
§ 3. Условия целостности данных. . . . . . 9
§ 4. Нормализация данных. . . . . . . 9
§ 5. Практические рекомендации по реализации проекта на Access. 17
§ 6. Схемы иерархии. . . . . . . 19
§ 7. Создание запросов. . . . . . . 22
Литература. . . . . . . . . 25
[1] Функциональная зависимость атрибутов X и Y отношения называется транзитивной, если существует такой атрибут Z, что имеется функциональные зависимости X®Z и Z®Y, но отсутствует функциональная зависимость Z®X.