7. Описание запросов
Запрос «AbityrTimetable» - Выводит расписание абитуриента.
Дано: номер листа абитуриента.
SELECT Abiturient.Nlista, Predmet.Predmet, Timetable.DateKons, Timetable.AydKons, Timetable.DateExam, Timetable.AydExam, Abiturient.Familiya, Abiturient.Name, Abiturient.Otchestvo, Abiturient.Groop
FROM (Potok INNER JOIN (Groop INNER JOIN Abiturient ON Groop.Groop = Abiturient.Groop) ON Potok.Potok = Groop.Potok) INNER JOIN (Predmet INNER JOIN Timetable ON Predmet.IDPredmet = Timetable.IDPredmet) ON Potok.Potok = Timetable.Potok
WHERE (((Abiturient.Nlista)=[Forms]![MainAbiturient]![Nlista]));
Результат: Таблица с расписанием абитуриента.
Запрос «AllAbitur» - выводит список всех абитуриентов
SELECT Faculty.Fakultet, Abiturient.Familiya, Abiturient.Name, Abiturient.Otchestvo
FROM (Faculty INNER JOIN Kafedra ON Faculty.IdFakultet=Kafedra.IdFakultet) INNER JOIN Abiturient ON Kafedra.IDKafedra=Abiturient.IDKafedra
ORDER BY Faculty.Fakultet, Abiturient.Familiya, Abiturient.Name, Abiturient.Otchestvo;
Результат: таблица всех абитуриентов по факультетам.
Запрос «del_abit» - удаляет абитуриента.
Дано: Nlista абитуриента.
DELETE Abiturient.*
FROM Abiturient
WHERE (((Abiturient.Nlista)=Forms!MainAbiturient!Nlista));
Результат: удаление всех данных об абитуриенте.
Запрос «DobAbitur» - добавляет данные об абитуриенте в таблицу.
Дано: Сведения об абитуриенте: Фамилия, Имя, Отчество, Серия паспорта, Номер паспорта, Кем выдан, Когда выдан, Сведения об образовании, Дата окончания, Медаль, Кафедра, Группа.
INSERT INTO Abiturient ( Familiya, Name, Otchestvo, SerPassport, NumPassport, KemPassport, WhenPassport, Studing, DateOkonchanija, Medal, IDKafedra, Groop )
SELECT Forms!AddAbiturient!Familiya AS Выражение1, Forms!AddAbiturient!Name AS Выражение2, Forms!AddAbiturient!Otchestvo AS Выражение3, Forms!AddAbiturient!SerPassport AS Выражение4, Forms!AddAbiturient!NumPassport AS Выражение5, Forms!AddAbiturient!KemPassport AS Выражение6, Forms!AddAbiturient!WhenPassport AS Выражение7, Forms!AddAbiturient!Studing AS Выражение8, Forms!AddAbiturient!DateOkonchanija AS Выражение9, Forms!AddAbiturient!Medal AS Выражение10, Forms!AddAbiturient!Kafedra AS Выражение11, Forms!AddAbiturient!Groop AS Выражение12;
Результат: добавлены сведения об абитуриенте.
Запрос «examved» - выводит список абитуриентов группы и их оценки по указанному предмету
Дано: № группы, IDPredmeta.
SELECT Groop.Groop, Abiturient.Familiya, Abiturient.Name, Abiturient.Otchestvo, Results.IDPredmet, Results.Mark, Predmet.Predmet
FROM Predmet INNER JOIN (Groop INNER JOIN (Abiturient INNER JOIN Results ON Abiturient.Nlista = Results.Nlista) ON Groop.Groop = Abiturient.Groop) ON Predmet.IDPredmet = Results.IDPredmet
WHERE (((Groop.Groop)=[Forms]![VedomostiGrypp]![Groop]) AND ((Results.IDPredmet)=[Forms]![VedomostiGrypp]![Predmet]));
Результат: таблица абитуриентов с оценками.
Запрос «GroopTimetable» - выводит расписание групп
SELECT Groop.Groop, Predmet.Predmet, Timetable.DateKons, Timetable.AydKons, Timetable.DateExam, Timetable.AydExam
FROM (Potok INNER JOIN Groop ON Potok.Potok = Groop.Potok) INNER JOIN (Predmet INNER JOIN Timetable ON Predmet.IDPredmet = Timetable.IDPredmet) ON Potok.Potok = Timetable.Potok;
Результат: таблица содержащая группы, предметы и расписание.
Запрос «ListAbiturientonFak» - список абитуриентов на факультете.
Дано: название факультета.
SELECT Faculty.Fakultet, Abiturient.Familiya, Abiturient.Name, Abiturient.Otchestvo
FROM (Faculty INNER JOIN Kafedra ON Faculty.IdFakultet = Kafedra.IdFakultet) INNER JOIN Abiturient ON Kafedra.IDKafedra = Abiturient.IDKafedra
WHERE (((Faculty.Fakultet)=[Forms]![AbiturientFak]![Fakultet]))
ORDER BY Faculty.Fakultet, Abiturient.Familiya, Abiturient.Name, Abiturient.Otchestvo;
Результат: таблица содержащая абитуриентов.
Запрос «MarkAbityrienta» - выводит предметы и оценки указанного абитуриента
Дано: № экз. листа абитуриента
SELECT Predmet.Predmet, Results.Mark
FROM Predmet INNER JOIN (Abiturient INNER JOIN Results ON Abiturient.Nlista = Results.Nlista) ON Predmet.IDPredmet = Results.IDPredmet
WHERE (((Abiturient.Nlista)=[Номер листа]));
Результат: таблица с названием предметов и оценки.
Запрос «NewMarkForNewAbiturient» - добавляет в таблицуResultдля абитуриента необходимые предметы с нулевыми оценками.
Дано: Nlista последнего абитуриента.
INSERT INTO Results ( IDPredmet, Nlista )
SELECT Timetable.IDPredmet, Abiturient.Nlista
FROM (Potok INNER JOIN (Groop INNER JOIN Abiturient ON Groop.Groop=Abiturient.Groop) ON Potok.Potok=Groop.Potok) INNER JOIN Timetable ON Potok.Potok=Timetable.Potok
WHERE (((Abiturient.Nlista)=(SELECT Last(Abiturient.Nlista) FROM Abiturient;)));
Результат: в таблице Resultзаписи о необходимых предметах.
Запрос «Query1» - выводитIDFakultetaиNlistaабитуриента на нем обучающегося.
SELECT Faculty.IdFakultet, Abiturient.Nlista
FROM (Faculty INNER JOIN Kafedra ON Faculty.IdFakultet = Kafedra.IdFakultet) INNER JOIN Abiturient ON Kafedra.IDKafedra = Abiturient.IDKafedra;
Результат: таблица с IDFakultetaиNlistaабитуриента.
Запрос «spravkavBYZ» - выводит оценки абитуриента.
Дано: Nlista абитуриента.
SELECT Abiturient.Nlista, Abiturient.Familiya, Abiturient.Name, Abiturient.Otchestvo, Predmet.Predmet, Results.Mark
FROM Predmet INNER JOIN (Abiturient INNER JOIN Results ON Abiturient.Nlista = Results.Nlista) ON Predmet.IDPredmet = Results.IDPredmet
WHERE (((Abiturient.Nlista)=[Forms]![MainAbiturient]![Nlista]));
Результат: таблица с данными и оценками абитуриента.
Запрос «SrednBalPoFakPoPredm» - находит средний бал по каждому предмету на каждом факультете.
SELECT Predmet.Predmet, Faculty.Fakultet, Avg(Results.Mark) AS [Avg-Mark]
FROM Predmet INNER JOIN ((Faculty INNER JOIN Kafedra ON Faculty.IdFakultet = Kafedra.IdFakultet) INNER JOIN (Abiturient INNER JOIN Results ON Abiturient.Nlista = Results.Nlista) ON Kafedra.IDKafedra = Abiturient.IDKafedra) ON Predmet.IDPredmet = Results.IDPredmet
GROUP BY Predmet.Predmet, Faculty.Fakultet
ORDER BY Faculty.Fakultet;
Результат: таблица с информацией о среднем бале.
Запрос «GetComptition» - выводит конкурс абитуриентов (чел/на место).
Дано: IDFaculty.
Public Function GetCompetition(IdFaculty As Integer) As String
Dim Mest, Abiturientov
Mest = DSum("[KolVoMest]", "Kafedra", "[IdFakultet]=" + Str(IdFaculty))
Abiturientov = DCount("Nlista", "Query1", "[IdFakultet]=" + Str(IdFaculty))
If Mest > 0 Then
GetCompetition = Format((Abiturientov / Mest), "0.00")
Else
GetCompetition = "---"
End If
End Function
Результат: значение конкурса.
Запрос «FillPostypivshie» - заполняет во временную таблицу «Postypivshie» информацией о поступивших абитуриентах.
Public Function FillPostypivshie()
'clear temporary table
Dim strSQL As String
strSQL = "DELETE * FROM Postypivshie"
DoCmd.RunSQL (strSQL)
'Fakultet Loop
Dim rsFaculty, rsKafedra, rsPostypivshie As DAO.Recordset
Set rsFaculty = CurrentDb.OpenRecordset("SELECT * FROM Faculty")
While Not rsFaculty.EOF
strSQL = "SELECT * FROM Kafedra WHERE Kafedra.IdFakultet=" & Str(rsFaculty.Fields("IdFakultet").Value)
Set rsKafedra = CurrentDb.OpenRecordset(strSQL)
'Kafedra Loop
While Not rsKafedra.EOF
If (rsKafedra.Fields("KolVoMest").Value = 0) Then
Else
strSQL = "SELECT TOP " & Str(rsKafedra.Fields("KolVoMest").Value) & " Kafedra.IDKafedra, Abiturient.Nlista, Sum(Results.Mark) AS SumMark, Abiturient.Familiya, Abiturient.Name, Abiturient.Otchestvo"
strSQL = strSQL & " FROM (Kafedra INNER JOIN Abiturient ON Kafedra.IDKafedra=Abiturient.IDKafedra) INNER JOIN Results ON Abiturient.Nlista=Results.Nlista"
strSQL = strSQL & " GROUP BY Kafedra.IDKafedra, Abiturient.Nlista, Abiturient.Familiya, Abiturient.Name, Abiturient.Otchestvo"
strSQL = strSQL & " HAVING (((Kafedra.IDKafedra) = " & Str(rsKafedra.Fields("IDKafedra").Value) & "))"
strSQL = strSQL & "ORDER BY Kafedra.IDKafedra, Sum(Results.Mark) DESC;"
Set rsPostypivshie = CurrentDb.OpenRecordset(strSQL)
While Not rsPostypivshie.EOF
strSQL = "INSERT INTO Postypivshie (Fakultet, IDKafedra, Nlista, Familiya, Name, Otchestvo, SumMark) VALUES ("
strSQL = strSQL & """" & rsFaculty.Fields("Fakultet").Value & """, " & Str(rsKafedra.Fields("IDKafedra").Value) & ", "
strSQL = strSQL & Str(rsPostypivshie.Fields("Nlista").Value) & ", """ & rsPostypivshie.Fields("Familiya").Value & """, """
strSQL = strSQL & rsPostypivshie.Fields("Name").Value & """, """ & rsPostypivshie.Fields("Otchestvo").Value & """, "
strSQL = strSQL & Str(rsPostypivshie.Fields("SumMark").Value) & ")"
DoCmd.RunSQL (strSQL)
rsPostypivshie.MoveNext
Wend
rsPostypivshie.Close
End If
rsKafedra.MoveNext
Wend
rsKafedra.Close
rsFaculty.MoveNext
Wend
rsFaculty.Close
End Function
Результат: заполненная таблица «Postypivshie».