Пример: Заполнение таблицы базы данных
ПРАКТИЧЕСКОЕ ЗАДАНИЕ №8. ЭЛЕМЕНТЫ УПРАВЛЕНИЯ.
Элемент управления Поле со списком. Поле со списком применяется для хранения списка значений и сочетает в себе функциональные возможности списка и поля ввода. В отличие от списка, в нем отображаются только один элемент списка, а режим выделения нескольких элементов отсутствует. Свойства аналогичны свойствам элемента Список. Дополнительные свойства:
Свойство | Описание |
DropButtonStyle | Устанавливает вид поля со списком. Допустимые значения: FmdropButtonStylePlain – кнопка без символов FmdropButtonStyleArrowdisplays – кнопка со стрелкой FmdropButtonStyleReduce – кнопка с линией FmdropButtonStyleEllipsis – кнопка с линией |
ListRows | Устанавливает число элементов , отображаемых в поле со списком |
MatchRequired | Лог.свойство – true – в поле ввода нельзя ввести значения, отличные от перечисленных в списке, false – иначе. |
MatchFound | Лог.свойство – true – среди элементов поля со списком имеется элемент, который совпадает с элементам в поле ввода, false – иначе. |
Пример: Заполнение таблицы базы данных .
В Excel существует встроенное средство – форма, диалоговое окно, с помощью которого можно заполнять и редактировать записи в таблице базы данных. Большим неудобством средства меню Данные/Форма является то, что каждому полю записи в нем соответствует только одно поле ввода. Но чаще при заполнении баз данных часто значения некоторых полей выбираются из некоторого списка. Лучше при наличии альтернативных значений использовать списки, переключатели, флажки, а не ограничиваться полями для ввода, как этот имеется в средстве Форма. Это во первых, позволит ускорить процесс заполнения таблицы, а во-вторых, избавит от опечаток.
Создадим свою пользовательскую форму для заполнения базы данных некоторой туристической фирмы.
Сначала создайте новую рабочую книгу, и на первом листе введите заголовки столбцов для базы данных.
Фамилия | Имя | Пол | Выбранный тур | оплачено | фото | паспорт | срок |
Затем посмотрите форму, которую создает MS Excel для заполнения, для этого нажмите Данные/Форма.
Нас не устраивает данная форма, создаем свою. Зайдите в VBA и создайте новую форму и вставляем элементы управления в соответствии с рис.
Используя свойства настройте следующие значения свойств Name элементов управления :
Элемент управления | Свойство Name | Предназначение |
Поле ввода | Textsurname | Ввод фамилии клиента |
Поле ввода | Textname | Ввод имени клиента |
Поле ввода | Textdays | Продолжительность тура можно вводить либо с клавиатуры либо с помощью счетчика |
Счетчик | SpinDays | Вводит продолжительность тура |
Поле со списком | Tour | Выбор из предложенных туров |
Переключатели | Male Female | Выбор пола |
Флажки | Payment Photo Passport | Флажки : оплата Фото Паспорт |
Кнопка | Cmdok | Ввод записи |
Кнопка | Cmdcancel | Закрытие окна |
Надписи и названия кнопок дайте самостоятельно согласно приведенному рис. c помощью свойства Caption .
Введите следующий код в модуле формы:
' описание типа клиент , в который будет входить следующая информация:
' фамилия, имя, и т.д.
Private Type klient
familiya As String
imy As String
pol As String
tur As String
oplacheno As String
foto As String
pasport As String
srok As String
End Type
Private Sub UserForm_Initialize()
' задание параметров раскрывающегося списка
With tour
.List = Array("Лондон", "Париж", "Берлин", "Карибы", "Малибу", "Мадрид")
.ListIndex = 0
End With
End Sub
Private Sub cmdok_Click()
' процедура считывания информации из диалогового окна и ее записи в базу данных
Dim newklient As klient
Dim stroca As Integer
' строка- номер первой строки из диалогового окна в переменную
stroca = WorksheetFunction.CountA(Range("A:A")) + 1
'считывание информации из диалоговго окна в переменную
With newklient
.familiya = Textsurname.Text
.imy = Textname.Text
.srok = Textdays.Text
.tur = tour.Text
If male.Value = True Then .pol = "Муж"
If female.Value = True Then .pol = "Жен"
If payment.Value = True Then .oplacheno = "Да" Else .oplacheno = "Нет"
If photo.Value = True Then .foto = "Да" Else .foto = "Нет"
If passport.Value = True Then .pasport = "Да" Else .pasport = "Нет"
End With
' ввод данных в строку с номером строка рабочего листа
With newklient
Cells(stroca, 1).Value = .familiya
Cells(stroca, 2).Value = .imy
Cells(stroca, 3).Value = .pol
Cells(stroca, 4).Value = .tur
Cells(stroca, 5).Value = .oplacheno
Cells(stroca, 6).Value = .foto
Cells(stroca, 7).Value = .pasport
Cells(stroca, 8).Value = .srok
End With
End Sub
Private Sub cmdcansel_Click()
'процедура закрытия окна
Unload Me
End Sub
Private Sub Spindays_Change()
'процедура ввода числа со счетчика в поле ввода
Textdays.Text = CStr(Spindays.Value)
End Sub
Private Sub Textdays_Change()
' процедура установки значения счетчика из поля ввода
If Not IsNumeric(Textdays.Text) Then Exit Sub
Spindays.Value = CInt(Textdays.Text)
End Sub
Теперь запустите модуль на выполнение и введите 5 записей.