Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание и обработка Баз данных средствами СУБД Ac.doc
Скачиваний:
24
Добавлен:
16.12.2013
Размер:
324.61 Кб
Скачать

Структура разработанной базы данных (состав таблиц исходных данных)

Рис.1. Создание таблицы «Child»

Рис.2. Создание таблицы «Parent»

Макеты представления разработанных справок и документов:

Справка №1. Список учеников 10-11 классов со слабым физическим развитием

Фамилия

Пол

Класс

Средняя оценка

Физическое развитие

.

Фамилия

ученика

Фамилия

одного из

Родителей

Должность

Заработная

плата

плата

Количество

детей

Семейный

бюджет

Справка №2. Список учеников и родителей многодетных семей (3 и более детей).

Справка 3. Список учеников 9-х классов из многодетных семей (3 и более детей), имеющих средний балл, больший 4,2. Список упорядочить по убыванию количества детей и баллов.

Фамилия

ученика

Фамилия

одного из

Родителей

Количество

детей

Пол

Класс

Средняя оценка

Распечатку разработанных форм проекта с указанием свойств управляющих элементов:

Интерфейс программы состоит из:

  1. Меню (рис.3. Создание Меню пользователя)

Рис.3.

  1. Таблицы (Рис.4), где:

А – Объект Adodc (Microsoft ADO Data Control 6.0), предназначенный для соединения с БД и с таблицей Access.

В – Объекты MS FlexGrid.

А В

Рис.4.

Алгоритм вывода записей из таблицы Child.

Процедуры (программные коды) решения задач:

'Загрузка формы и соединение с базой

Private Sub Form_Load()

dbChild.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Spisok.mdb;Persist Security Info=False"

dbParent.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Spisok.mdb;Persist Security Info=False"

End Sub

' Вывод данных по ученикам

Private Sub Mchild_Click()

Dim I%, J%, K%, M% 'переменные для организации цикла

dbChild.Caption = "Ученики"

dbChild.RecordSource = "SELECT *FROM Child" 'SQL-запрос к таблице

dbChild.Refresh 'выполнить запрос

dbChild.Recordset.MoveFirst 'переход на первую запись таблицы Child

K = dbChild.Recordset.RecordCount 'количество записей таблицы Child

M = dbChild.Recordset.Fields.Count 'количество полей таблицы Child

ChildGrid.Rows = K + 1: ChildGrid.Cols = M

ChildGrid.TextMatrix(0, 0) = "ID"

ChildGrid.TextMatrix(0, 1) = "Фамилия"

ChildGrid.TextMatrix(0, 2) = "Пол"

ChildGrid.TextMatrix(0, 3) = "Класс"

ChildGrid.TextMatrix(0, 4) = "Средняя оценка"

ChildGrid.TextMatrix(0, 5) = "Физическое развитие"

For I = 1 To K 'по записям таблицы Child

For J = 1 To M 'по полям текущей записи

ChildGrid.TextMatrix(I, J - 1) = dbChild.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки

Next J

dbChild.Recordset.MoveNext 'переход к следующей записи

Next I

End Sub

' Итоговый документ об учениках 10 классов

Private Sub MDoc_Click(Index As Integer)

Dim I%, J%, K%, M%, N%

Dim Sumpay As Currency ' душевой доход

dbChild.Caption = "Итоговый документ об учениках 10 классов"

'SQL-запрос к таблице Child

dbChild.RecordSource = "SELECT ID, fio_child, sex, class, mid_ocenka, fiz_dev FROM Child "

dbChild.Refresh

dbChild.Recordset.MoveFirst 'переход на первую запись таблицы Child sum_pay

K = dbChild.Recordset.RecordCount 'количество записей таблицы Child

M = dbChild.Recordset.Fields.Count 'количество полей таблицы Child

'SQL-запрос к таблице Parent

dbParent.RecordSource = "SELECT id, fio_child, child_count, sum_pay FROM Parent "

dbParent.Refresh

dbParent.Recordset.MoveFirst 'переход на первую запись таблицы dbParent

ChildGrid.Rows = 2: ChildGrid.Cols = 2

ChildGrid.Rows = K + 1: ChildGrid.Cols = M + 1

ChildGrid.TextMatrix(0, 0) = "ID"

ChildGrid.TextMatrix(0, 1) = "Фамилия"

ChildGrid.TextMatrix(0, 2) = "Пол"

ChildGrid.TextMatrix(0, 3) = "Класс"

ChildGrid.TextMatrix(0, 4) = "Средняя оценка"

ChildGrid.TextMatrix(0, 5) = "Физ. развитие"

ChildGrid.TextMatrix(0, 6) = "Душевой доход"

M = 1 ' счетчик показываемых записей

For I = 1 To K 'по записям таблицы Child

If dbChild.Recordset.Fields(3).Value = 10 Then

'Поиск записи в таблице Parent

dbParent.Recordset.MoveFirst

For N = 1 To dbParent.Recordset.RecordCount

If dbChild.Recordset.Fields(1).Value = dbParent.Recordset.Fields(1).Value Then

Sumpay = dbParent.Recordset.Fields(3).Value / (dbParent.Recordset.Fields(2).Value + 2)

End If

dbParent.Recordset.MoveNext

Next N

For J = 1 To 6 'по полям текущей записи

ChildGrid.TextMatrix(M, J - 1) = dbChild.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки

Next J

ChildGrid.TextMatrix(M, 6) = Str(Sumpay)

M = M + 1

End If

dbChild.Recordset.MoveNext 'переход к следующей записи

Next I

End Sub

'Процедура входа из программы

Private Sub MExit_Click()

End

End Sub

'Вывод данных по родителям

Private Sub Mparent_Click()

Dim I%, J%, K%, M%

dbParent.Caption = "Семья"

dbParent.RecordSource = "SELECT *FROM parent" 'SQL-запрос к таблице

dbParent.Refresh

dbParent.Recordset.MoveFirst 'переход на первую запись таблицы Parent

K = dbParent.Recordset.RecordCount 'количество записей таблицы Parent

M = dbParent.Recordset.Fields.Count 'количество полей таблицы Parent

ParentGrid.Rows = K + 1: ParentGrid.Cols = M

ParentGrid.TextMatrix(0, 0) = "ID"

ParentGrid.TextMatrix(0, 1) = "ФИО ученика"

ParentGrid.TextMatrix(0, 2) = "ФИО родителя"

ParentGrid.TextMatrix(0, 3) = "Должность"

ParentGrid.TextMatrix(0, 4) = "Зарплата"

ParentGrid.TextMatrix(0, 5) = "Кол. детей"

ParentGrid.TextMatrix(0, 6) = "Сем. бюджет"

For I = 1 To K 'по записям таблицы Parent

For J = 1 To M 'по полям текущей записи

ParentGrid.TextMatrix(I, J - 1) = dbParent.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки

Next J

dbParent.Recordset.MoveNext 'переход к следующей записи

Next I

End Sub

'Справка 2 Список многодетных семей

Private Sub MSp2_Click()

Dim I%, J%, K%, M%

dbParent.Caption = "Многодетные семьи"

'SQL-запрос к таблице

dbParent.RecordSource = "SELECT ID, fio_child, fio_parent, child_count FROM parent where " & _

"child_count>=3 ORDER BY fio_child"

dbParent.Refresh

dbParent.Recordset.MoveFirst 'переход на первую запись таблицы Parent

K = dbParent.Recordset.RecordCount 'количество записей таблицы Parent

M = dbParent.Recordset.Fields.Count 'количество полей таблицы Parent

ParentGrid.Rows = K + 1: ParentGrid.Cols = M

ParentGrid.TextMatrix(0, 0) = "ID"

ParentGrid.TextMatrix(0, 1) = "ФИО ученика"

ParentGrid.TextMatrix(0, 2) = "ФИО родителя"

ParentGrid.TextMatrix(0, 3) = "Кол. детей"

For I = 1 To K 'по записям таблицы Parent

For J = 1 To M 'по полям текущей записи

ParentGrid.TextMatrix(I, J - 1) = dbParent.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки

Next J

dbParent.Recordset.MoveNext 'переход к следующей записи

Next I

End Sub

'Справка 3 Список учеников 9-х классов из многодетных семей

Private Sub MSp3_Click()

Dim I%, J%, K%, M%, N%, L%

dbChild.Caption = "Cписок учеников 9-х классов из многодетных семей"

ChildGrid.Rows = 2: ChildGrid.Cols = 2

'SQL-запрос к таблице

dbChild.RecordSource = "SELECT ID, fio_child, class, mid_ocenka " & _

" FROM Child " & _

" WHERE " & _

" mid_ocenka > 4.2 " & _

" AND class =9 ORDER BY mid_ocenka DESC"

dbChild.Refresh

dbChild.Recordset.MoveFirst 'переход на первую запись таблицы Child

K = dbChild.Recordset.RecordCount 'количество записей таблицы Child

M = dbChild.Recordset.Fields.Count 'количество полей таблицы Child

'SQL-запрос к таблице

dbParent.RecordSource = " SELECT id, fio_child, child_count " & _

" FROM Parent " & _

" WHERE " & _

" child_count >=3 " & _

" ORDER BY child_count DESC"

dbParent.Refresh

dbParent.Recordset.MoveFirst 'переход на первую запись таблицы Child

ChildGrid.Rows = K + 1: ChildGrid.Cols = M + 1

ChildGrid.TextMatrix(0, 0) = "ID"

ChildGrid.TextMatrix(0, 1) = "Фамилия"

ChildGrid.TextMatrix(0, 2) = "Класс"

ChildGrid.TextMatrix(0, 3) = "Средняя оценка"

ChildGrid.TextMatrix(0, 4) = "Кол. в семье детей"

L = 1

For I = 1 To K 'по записям таблицы Child

'Поиск записи в таблице Parent

dbParent.Recordset.MoveFirst

For N = 1 To dbParent.Recordset.RecordCount

If (dbChild.Recordset.Fields(1).Value = dbParent.Recordset.Fields(1).Value) Then

For J = 1 To M 'по полям текущей записи

ChildGrid.TextMatrix(L, J - 1) = dbChild.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки

Next J

ChildGrid.TextMatrix(L, 4) = Str(dbParent.Recordset.Fields(2).Value)

L = L + 1

End If

dbParent.Recordset.MoveNext

Next N

dbChild.Recordset.MoveNext 'переход к следующей записи

Next I

End Sub

'Справка1 Запрос по ученикам со слабым физ. развитием

Private Sub Mspr1_Click()

Dim I%, J%, K%, M%

dbChild.Caption = "Ученики со слабым здоровьем"

'SQL-запрос к таблице

dbChild.RecordSource = "SELECT *FROM Child WHERE fiz_dev = '" & _

"удовлетворительное' and class >=10 ORDER BY class, fio_child"

dbChild.Refresh

dbChild.Recordset.MoveFirst 'переход на первую запись таблицы Child

K = dbChild.Recordset.RecordCount 'количество записей таблицы Child

M = dbChild.Recordset.Fields.Count 'количество полей таблицы Child

ChildGrid.Rows = K + 1: ChildGrid.Cols = M

ChildGrid.TextMatrix(0, 0) = "ID"

ChildGrid.TextMatrix(0, 1) = "Фамилия"

ChildGrid.TextMatrix(0, 2) = "Пол"

ChildGrid.TextMatrix(0, 3) = "Класс"

ChildGrid.TextMatrix(0, 4) = "Средняя оценка"

ChildGrid.TextMatrix(0, 5) = "Физическое развитие"

For I = 1 To K 'по записям таблицы Child

For J = 1 To M 'по полям текущей записи

ChildGrid.TextMatrix(I, J - 1) = dbChild.Recordset.Fields(J - 1) 'вывод в сетку Flp, начиная с нулевой строки

Next J

dbChild.Recordset.MoveNext 'переход к следующей записи

Next I

End Sub