Проектирование реляционной базы данных методом «Сущность – связь», страница 4

FROM statya INNER JOIN (marka INNER JOIN ((avtolyub INNER JOIN avto ON avtolyub.ka = avto.ka) INNER JOIN protokol ON avto.gn = protokol.gn) ON marka.nma = avto.nma) ON statya.nsya = protokol.nsya

WHERE (((avto.gn)=[Forms]![DobNarush]![ПолеСоСписком0]));

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

SELECT inspektor.fi, Count(protokol.nr) AS Колличество, Sum(protokol.ssh) AS Сумма

FROM inspektor INNER JOIN protokol ON inspektor.ki = protokol.ki

GROUP BY inspektor.fi

ORDER BY Count(protokol.nr) DESC;

4. По построенным таблицам создадим формы.

Форма 1. добавление новой машины определенному автолюбителю.

Рис. 9.

Private Sub Кнопка33_Click()

Dim base As Database

Dim rec As Recordset

Me.ПолеСоСписком0.SetFocus

If Me.ПолеСоСписком0.Text = "" Then MsgBox "Выберите ФИО авторюбителя": End

Me.Поле15.SetFocus

If Me.Поле15.Text = "" Then MsgBox "Введите Гос №": End

Me.ПолеСоСписком17.SetFocus

If Me.ПолеСоСписком17.Text = "" Then MsgBox "Выберите марку": End

Me.Поле19.SetFocus

If Me.Поле19.Text = "" Then MsgBox "Введите год выпуска": End

Me.Поле21.SetFocus

If Me.Поле21.Text = "" Then MsgBox "Введите № кузова": End

Me.Поле23.SetFocus

If Me.Поле23.Text = "" Then MsgBox "Введите № двигателя": End

Me.Поле25.SetFocus

If Me.Поле25.Text = "" Then MsgBox "Введите № шосси": End

Me.ПолеСоСписком27.SetFocus

If Me.ПолеСоСписком27.Text = "" Then MsgBox "Выберите цвет": End

'Создание нового объекта:

Set base = CurrentDb ' откроем текущую БД

Set rec = base.OpenRecordset("SELECT ka,gn,nma,gv,nk,nd,nsh,cv,iu FROM [avto]") 'открыть таблицу

rec.Edit

Me.Поле15.SetFocus

rec.FindFirst "gn= '" & Me.Поле15.Text & "'"

'если запись уже есть

If Not rec.NoMatch() Then

MsgBox "Машина с таким гос № уже есть": Me.Поле15.Text = "": End

End If

rec.AddNew        'добавить новую запись

Me.ПолеСоСписком0.SetFocus

rec!ka = Me.ПолеСоСписком0.Column(0)

Me.Поле15.SetFocus

rec!gn = Me.Поле15.Text

Me.ПолеСоСписком17.SetFocus

rec!nma = Me.ПолеСоСписком17.Column(0)

Me.Поле19.SetFocus

rec!gv = Me.Поле19.Text

Me.Поле21.SetFocus

rec!nk = Me.Поле21.Text

Me.Поле23.SetFocus

rec!nd = Me.Поле23.Text

Me.Поле25.SetFocus

rec!nsh = Me.Поле25.Text

Me.ПолеСоСписком27.SetFocus

rec!cv = Me.ПолеСоСписком27.Text

Me.Флажок29.SetFocus

rec!iu = Me.Флажок29

rec.Update       'обновление БД

Me.Список13.Requery

MsgBox "Добавлено"

'Me.ПолеСоСписком0.SetFocus

'Me.ПолеСоСписком0.Text = ""

Me.Поле15.SetFocus

Me.Поле15.Text = ""

Me.ПолеСоСписком17.SetFocus

Me.ПолеСоСписком17.Text = ""

Me.Поле19.SetFocus

Me.Поле19.Text = ""

Me.Поле21.SetFocus

Me.Поле21.Text = ""

Me.Поле23.SetFocus

Me.Поле23.Text = ""

Me.Поле25.SetFocus

Me.Поле25.Text = ""

Me.ПолеСоСписком27.SetFocus

Me.ПолеСоСписком27.Text = ""

Me.Флажок29.SetFocus

Me.Флажок29 = "0"

End Sub

Форма 2. добавление нового инспектора

Рис. 10.

Private Sub inspdob_Click()

Dim base As Database

Dim rec As Recordset

Me.Поле4.SetFocus

If Me.Поле4.Text = "" Then MsgBox "Введите ФИО инспектора": End

'Создание нового объекта:

Set base = CurrentDb ' откроем текущую БД

Set rec = base.OpenRecordset("SELECT fi FROM [inspektor]") 'открыть таблицу

rec.Edit

rec.FindFirst "fi= '" & Me.Поле4.Text & "'"

'если запись уже есть

If Not rec.NoMatch() Then

MsgBox "Такой инспектор уже есть": Me.Поле4.Text = "": End

End If

rec.AddNew        'добавить новую запись

rec!fi = Me.Поле4.Text

rec.Update       'обновление БД

MsgBox "Добавлено"

Me.Поле4.Text = ""

End Sub

Форма 3. удаление определенной машины (если машина после правонарушения не подлежит восстановлению), форма 4. добавление нового правонарушения.