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

' Переменные уровня модуля

Private ws As workspace

Private db As Database

Private rs As Recordset

Private rsClone As Recordset

Private Фамилия As String

Private Критерий As String

Private Закладка As Variant

Private Sub UserForm_Initialize()

'Создание рабочей области

Set ws = DBEngine.Workspaces(0)

'Открытие базы данных студенты.mdb

Set db = ws.OpenDatabase(Name:=ThisWorkbook.Path & "\Example.MDB")

'Создание записей

Set rs = db.OpenRecordset("Первый курс", dbOpenDynaset)

'Принудительное перемещение на последнюю rs для того, чтобы определить число записей

rs.MoveLast

'Вывод числа записей в надпись Всего записей

lblNumberOfRec.Caption = "Всего записей " & CStr(rs.RecordCount)

'Принудительное перемещение на первую rs

rs.MoveFirst

'вывод первой записи в поля диалогового окна

Showrecord

'создание копии записи и выбор переключателя

Set rsClone = rs.Clone

OptAll.Value = True

End Sub

Private Sub cmdSearch_Click()

'Найти запись с указанной фамилией

Закладка = rs.Bookmark

Фамилия = Trim(txtName.Text)

Критерий = "[Фамилия]='" & Фамилия & "'"

rs.FindFirst Критерий

If rs.NoMatch = False Then

Showrecord

Else

MsgBox "Запись не найдена", vbInformation, "Студенты"

rs.Bookmark = Закладка

Showrecord

End If

End Sub

Private Sub cmdSearchNext_Ciick()

'Найти следующую запись с той же фамилией

Закладка = rs.Bookmark

Фамилия = Trim(txtName.Text)

Критерий = "[Фамилия]='" & Фамилия & "'"

rs.FindNext Критерий

If rs.NoMatch = False Then

Showrecord

Else

MsgBox "Больше таких записей нет", vbInformation, "Студенты"

rs.Bookmark = Закладка

Showrecord

End If

End Sub

Private Sub cmdDelete_Click()

' Удаление записи

With rs

.Delete

.MoveNext

End With

Showrecord

lblNumberOfRec.Caption = "Всего записей " & CStr(rs.RecordCount)

End Sub

Private Sub cmdAddNew_Click()

' Добавить новую запись

With rs

.AddNew

.Fields("Фамилия").Value = txtName.Text

.Fields("Специальность").Value = txtGroup.Text

.Fields("Предмет").Value = txtSubject.Text

.Fields("Оценка").Value = txtMark.Text

.Update

End With

lblNumberOfRec.Caption = "Всего записей " & CStr(rs.RecordCount)

End Sub

Private Sub cmdEdit_Click()

' Редактирование записи

With rs

.Edit

.Fields("Фамилия").Value = txtName.Text

.Fields("Специальность").Value = txtGroup.Text

.Fields("Предмет").Value = txtSubject.Text

.Fields("Оценка").Value = txtMark.Text

.Update

End With

End Sub

Private Sub cmdClose_Click()

' Закрытие записи, база данных и окна

closedb

End Sub

Private Sub cmdMoveFirst_Click()

' Переход к первой записи

rs.MoveFirst

Showrecord

End Sub

Private Sub cmdMovePrevious_Click()

'Переход к предыдущей записи

rs.moveprevious

If rs.BOF = True Then

rs.MoveFirst

MsgBox "Первая запись", vbInformation, "Студенты"

End If

Showrecord

End Sub

Private Sub cmdMoveNext_Click()

'Переход к последующей записи

rs.MoveNext

If rs.EOF = True Then

rs.MoveLast

MsgBox "Последняя запись", vbInformation, "Студенты"

End If

Showrecord

End Sub

Private Sub optBest_Click()

'Отображение только хорошистов и отличников

'Создание копии записи

Set rsClone = rs.Clone

'Фильтрация записей по критерию

rs.Filter = "[Оценка]>=4"

'Создание отфильтрованной записи

Set rs = rs.OpenRecordset()

If rs.RecordCount > 0 Then

Showrecord

Else

MsgBox "Таких студентов нет", vbInformation, "Студенты"

Set rs = rsClone.Clone

Set rs = rs.OpenRecordset()

OptAll.Value = True

End If

End Sub

Private Sub OptAll_Click()

'Отображение всех студентов

Set rs = rsClone.OpenRecordset()

Showrecord

End Sub

Private Sub Showrecord()

'Вывод записи в поля диалогового окна

With rs

txtName.Text = .Fields("Фамилия").Value

txtGroup.Text = .Fields("Специальность").Value

txtSubject.Text = .Fields("Предмет").Value

txtMark.Text = .Fields("Оценка").Value

End With

End Sub

Private Sub closedb()

'Закрытие записей, базы данных, рабочего пространства и окна

rs.Close

rsClone.Close

db.Close

ws.Close

Unload Me

Соседние файлы в папке Лаб.5 Лебедев А.В