Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по курсовой работе.DOC
Скачиваний:
104
Добавлен:
01.05.2014
Размер:
3.15 Mб
Скачать

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».

Соседние файлы в предмете Базы данных