В этом уроке разрабатывается приложение, позволяющее при помощи диалогового окна заполнять базу данных. Конструируя данное приложение, вы сможете освоить следующие операции:
Последовательное заполнение плоской базы данных
Программирование примечаний
Программирование текстовых полей на рабочем листе
Использование переключателя и флажков
Создание пользовательского заголовка окна приложения
Как на рабочем листе программно закрепить область
Практика
Для заполнения базы данных на рабочем листе с помощью редактора пользовательских форм создадим диалоговое окно Регистрация туристов фирмы "Эх, прокачу!" (рис. У7.1).
Рис. У7.1. Диалоговое окно Регистрация туристов фирмы "Эх, прокачу!"
Рис. У7.2. База данных о туристах на рабочем листе
Рис. У7.3. Пояснительное текстовое поле, появляющееся при выборе переключателя О программе
При инициализации диалогового окна программа проверяет, есть ли заголовки у полей создаваемой базы данных о регистрации туристов. Если этих заголовков нет, то программа автоматически создает их, снабжая примечаниями, имеющими пояснительный текст о содержании полей (рис. У7.2). Выбор переключателя о программе приведет к отображению на экране текстового поля с пояснениями к данной программе. Снятие этого флажка удаляет данное поле (рис. У7.3). Обратите внимание, что у окна приложения пользовательскоеимя Регистрация. База данных туристов.
Обсудим, как приведенная ниже программа решает перечисленные задачи и что происходит в программе.
Назначает кнопкам вычислить, отмена и переключателю о программе всплывающие подсказки.
Закрепляет первую строку так, чтобы она всегда отображалась на экране.
Создает заголовки полей базы данных, если они еще не были созданы.
Устанавливает начальное значение переключателя 0 программе.
Заполняет раскрывающийся список.
Устанавливает текст заголовка окна приложения.
Нажатие кнопки вычислить запускает на выполнение процедуру
CommandButton1_Click
Определяет номер первой пустой строки в базе данных о регистрации туристов, куда будет введена новая запись.
Считывает данные из диалогового окна.
Вводит их в первую пустую строку.
Нажатие кнопки Отмена запускает на выполнение процедуру
CommandButton2_Click
Закрывает диалоговое окно. Устанавливает заголовок приложения, используемый по умолчанию, т. е. удаляет пользовательский заголовок приложения, созданный при активизации формы.
SpinButtonl_Change
Вводит значение в поле продолжительность тура.
ToggleButtonl Click
Отображает текстовое поле в выбранном состоянии и удаляет его — в снятом состоянии.
ЗаголовокРабочегоЛиста
Создает заголовки полей базы данных о регистрации туристов. Эти заголовки отображаются с примечаниями.
Private Sub CommandButtonl_Click()
' Процедура считывания информации из диалогового окна
' и записи ее в базу данных на рабочем листе
'
'
' Смысл переменных однозначно определен их названиями
'
Dim Фамилия As String * 20
Dim Имя As String * 20
Dim Пол As String * 3
Dim ВыбранныйТур As String * 20
Dim Оплачено As String * 3
Dim Фото As String * 3
Dim Паспорт As String * 3
Dim Срок As String * 3
Dim НомерСтроки As Integer '
' НомерСтроки - номер первой пустой строки рабочего листа
правая часть которой вычисляет число непустых ячеек в первом столбце активного рабочего листа. Переменной НомерСтроки присваивается значение на единицу большее, чем число непустых строк, что естественно, т. к. ей должен быть присвоен номер первой непустой строки базы данных. Подобные инструкции довольно часто используется при разработке приложений, поэтому рекомендуем обратить на них внимание.
Процедура заголовокрабочегоЛиста выглядит немножко устрашающе. При ее написании лучше всего воспользоваться MacroRecorder, который переведет производимые действия по созданию примечаний пользователем вручную на язык VBA. Итак, для активизации MacroRecorder выберите команду Сервис, Макрос, Начать запись (Tools, Macro, Record New Macro) и запустите MacroRecorder на запись. После задания всех параметров в появившемся диалоговом окне Запись макроса (Record Macro) и нажатия кнопки ОК появится плавающая панель инструментов с кнопкой Остановить запись (Stop Recording). Теперь все производимые действия будут записываться до тех пор, пока не будет нажата эта кнопка. Постройте примечания по следующему алгоритму. Кроме того, для того чтобы разобраться, как программируется закрепление области на рабочем листе, в этот алгоритм входит также и закрепление первой строки рабочего листа.
Щелкните кнопку заголовка второй строки. Вторая строка выделится. Выберите команду Окно, Закрепить области (Window, Freeze Panes).
Выделите ячейку A1 и нажмите кнопку Надпись (Text box) панели инструментов Рисование (Drawing). В появившееся текстовое поле введите текст Фамилия клиента.
Выделите ячейку BI и нажмите кнопку Надпись (Text Box) панели инструментов Рисование (Drawing). В появившееся текстовое поле введите текст имя клиента и т. д. последовательно для ячеек от С1 до H1 .
Перечисленные выше действия будут переведены MacroRecorder в следующий макрос.
Первые две инструкции записанного макроса показывают, как программно закрепляется область, а остальные - как создаются примечания у ячеек рабочего листа. Теперь, при создании приложения эти фрагменты просто надо вставить в требуемое место набираемой программы.
Аналогично, при написании фрагмента программы, связанного с созданием текстового поля, лучше всего воспользоваться MacroRecorder, который переведет производимые пользователем вручную действия по созданию текстового поля на язык VBA. Итак, для активизации MacroRecorder выберите команду Сервис, Макрос, Начать запись (Tools, Macro, Record New Macro) и запустите MacroRecorder на запись. После задания всех параметров в появившемся диалоговом окне Запись макроса (Record Macro) и нажатия кнопки ОК появится плавающая панель инструментов с кнопкой Остановить запись (Stop Recording). Теперь все производимые действия будут записываться до тех пор, пока не будет нажата эта кнопка. Постройте текстовое поле по алгоритму:
Нажмите кнопку Надпись (Text box) панели Рисование (Drawing) и создайте на рабочем листе текстовое поле.
Наберите в текстовом поле следующий текст:
Программа составлена Андреем Гарнаевым для регистрации клиентов туристической фирмы.
Выделите текстовое поле и смените цвет его заливки на желтый, нажав кнопку Цвет заливки (Fill Color) панели инструментов Рисование (Drawing).
Перечисленные выше действия будут переведены MacroRecorder в следующий макрос.
В раскрывающемся списке выводятся три типа номеров: одноместный, Двухместный, Люкс, стоимость проживания в которых равна 150, 100 и 250 руб. в сутки
Если постоялец заказывает завтраки в номер, то суточная оплата возрастает на 15 руб.
При нажатии на кнопку ок в поле Стоимость проживания выводится суммарная стоимость проживания клиента, и все данные из диалогового окна должны вводится в базу данных, создаваемую на рабочем листе