Самоучитель VBA


Рисунок 15 11 Диалоговое окно Студенты первого курса



Рисунок 15.11. Диалоговое окно Студенты первого курса




Приводимая ниже программа:

  1. При активизации диалогового окна выводит в поля ввода информацию о первом студенте и в надписи всего записей указывает общее число записей в таблице.
  2. При нажатии кнопок > и < происходит перемещение на одну запись вперед и назад соответственно, а при нажатии кнопок >> и << — перемещение в конец и начало таблицы соответственно.

При нажатии кнопки найти происходит поиск первой записи из таблицы с указанной фамилией (если такой записи нет, то при помощи свойства Bookmark указатель возвращается в ту же позицию, откуда начался поиск). При нажатии кнопки найти далее ищется последующая запись с той же фамилией.

  1. При нажатии кнопки Удалить удаляется запись.
  2. При нажатии кнопки новая запись создается новая запись по данным, введенным в поля ввода.
  3. При нажатии кнопки Редактировать вносятся изменения в запись из базы данных.
  4. При нажатии кнопки Закрыть закрываются база данных и диалоговое окно.
  5. При выборе переключателя хорошисты и отличники в диалоговом окне выводятся данные только о хорошистах и отличниках, а при выборе переключателя все — выводится информация обо всех студентах.

'

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

'

Dim РабочаяОбласть As Workspace

Dim БазаДанных As Database

Dim Запись As Recordset

Dim ЗаписьДубль As Recordset

Dim Фамилия As String

Dim Критерий As String

Dim Закладка As Variant

'

Private Sub CommandButton1_Click()

'

' Найти запись по фамилии

'

' Запоминается на закладке текущая запись

Закладка = Запись.Bookmark

'

' Считывается фамилия из поля Фамилия, на ее основе

' создается критерий поиска и ищется первая запись с

' подобной фамилией '

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

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

Запись.FindFirst Критерий

' Если запись с указанной фамилией найдена, то она отображается

' в диалоговом окне.

' Если запись не найдена, то отображается сообщение и

' при помощи закладки происходит возврат к записи, с которой

' был начат поиск

'

If Запись.NoMatch = False Then

ПоказатьЗапись Else

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

Запись.Bookmark = Закладка

ПоказатьЗапись End If

End Sub

Private Sub CommandButtonlO_Click()

'

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

'

'

Запись.MoveLast ПоказатьЗапись

End Sub

'

Private Sub CommandButton2_Click()

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

'

Закладка = Запись.Bookmark

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

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

Запись.FindNext Критерий

If Запись.NoMatch = False Then

Показать Запись Else

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

Запись.Bookmark = Закладка

Показать Запись

End If

End Sub

Private Sub CommandButton3_Click()

'

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

'

With Запись

.Delete

.MoveNext End With ПоказатьЗапись

End Sub

'

Private Sub CommandButton4_Click()

'

' Добавление записи

'

With Запись .AddNew

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

.Fields("Группа").Value = TextBox2.Text

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

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

End With

'

Exit Sub

'

End Sub

Private Sub CommandButton5_Click()

'

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

'

With Запись .Edit

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

.Fields("Группа").Value = TextBox2.Text

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

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

.Update End With End Sub

Private Sub CommandButton6_Click()

'

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

'

Запись.Close

БазаДанных.Close

РабочаяОбласть.Close

UserForml.Hide

End Sub

Private Sub CommandButton7_Click()

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

'Запись.MoveFirst Показать Запись

End Sub

Private Sub CommandButton8_Click()

'

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

'Запись.MovePrevious

'

' Если достигнута первая запись, то отображается сообщение

'

If Запись.BOF = True Then

Запись.MoveFirst

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

End If

'ПоказатьЗапись

End Sub

'

Private Sub CommandButton9_Click()

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

'

Запись.MoveNext

' Если достигнута последняя запись, то отображается сообщение

'

If Запись.EOF = True Then

Запись.MoveLast

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

End If

ПоказатьЗапись

End Sub

'

Private Sub OptionButtonl_Click()

'

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

'

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

'

Set ЗаписьДубль = Запись.Clone

'

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

'

Запись.Filter = "[Оценка] >= 4"

'

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

'

Set Запись= Запись.OpenRecordset()

If Запись.RecordCount > 0 Then

'

' Если отфильтрованная запись существует, то она отображается

' в диалоговом окне

'ПоказатьЗапись

Else

'

' Если отфильтрованной записи нет, то отображается соответствующее

' сообщение, восстанавливается первоначальный объект Recordset

' и выбирается переключатель Все

'

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

Set- Запись = ЗаписьДубль.Clone

Set Запись = Запись.OpenRecordset()

OptionButton2.Value = True

End If

End Sub

Private Sub OptionButton2_Click()

'

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

'

Set ЗаписьДубль = Запись.Clone

Set Запись = ЗаписьДубль.OpenRecordset()

ЗаписьДубль.Close

ПоказатьЗапись

End Sub

'

Private Sub UserForm_Initialize()

'

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

'

Set РабочаяОбласть = CreateWorkspace(Name:="", UserName:="admin",

Password:="", UseType:=dbUseJet)

'

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

Set БазаДанных = _

РабочаяОбласть.OpenDatabase

(Name:="C:\MY_DOC\студенты.mdb",

Options:=True)

'

'

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

'

Set Запись = БазаДанных.OpenRecordset("ПервыйКурс",dbOpenDynaset)

'

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

' чтобы определить число записей Запись.MoveLast

'

' Вывод числа записей в надписи Номер записи из

'

'

Labels.Caption = "Всего записей " & CStr(Запись.RecordCount)

'

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

'Запись.MoveFirst

'

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

'

ПоказатьЗапись With UserForm1

.Caption = "Студенты первого курса"

.OptionButton2.Value = True End With

End Sub

'

Sub ПоказатьЗапись()

'

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

'

TextBoxl.Text = Запись.Fields("Фамилия").Value

TextBox2.Text = Запись.Fields("Группа").Value

TextBox3 .Text = Запись.Fields ("Предмет.").Value

TextBox4.Text = Запись.Fields("Оценка").Value

'

End Sub









Начало  Назад