Чтение онлайн

на главную - закладки

Жанры

Access 2002. Самоучитель
Шрифт:

Рис. 12.12

Итак, вы умеете бороться с дублированием записей двумя способами (один из них был описан в главе 11). Мы рекомендуем иметь в своем арсенале оба. Отметим лишь, что последний вариант удобнее при вводе записей словарного типа, где определяющим является одно поле (в данном случае – поле Название фирмы). В принципе ничего невозможного нет, и нетрудно усовершенствовать программу настолько, чтобы она позволяла контролировать несколько полей. Но подобное усложнение процедуры вряд ли оправдано, тем более что для такого случая есть другой вариант отсева

дублирующихся записей.

Установка на последнюю запись при открытии формы

В главе 11 уже упоминалось о том, что при активизации форма открывается на последней, еще пустой записи, чтобы пользователь не тратил время на поиски и мог сразу вводить новую информацию. Теперь рассмотрим программный механизм, который позволяет реализовать эту установку. В качестве примера возьмем ту же форму Фирмы.

Подготовка процедуры

По сути данная процедура представляет собой просто фрагмент предыдущей программы. Фокус передается новой записи, затем максимальное значение увеличивается на единицу и присваивается этой новой записи.

Как и в предыдущем примере, начните с окна свойств. Но теперь вам понадобится таблица свойств не какого-то отдельного поля, а всей формы в целом. Открыв форму Фирмы в режиме конструктора, щелкните по кнопке

Она расположена в левом верхнем углу формы, непосредственно под названием Фирмы: Form (см. рис. 12.13). На фоне окна конструктора откроется окно таблицы свойств формы. Активизируйте опцию Открыть. Щелкните в этом поле мышью и воспользуйтесь стрелкой прокрутки. В выпадающем списке выберите позицию Обработка событий и включите ее в поле Открыть. Если теперь вы щелкнете по кнопке

то в окне модуля будут выведены операторы, обрамляющие процедуру (см. рис. 12.6): Private Sub Form_Open (Cancel As Integer) и End Sub.

Рис. 12.13

Отметим, что само по себе окно модуля не содержит новой информации, необходимой читателю. Поэтому в дальнейшем мы не станем включать в главу рисунки, которые явно избыточны. Обсуждаться будет только текст программы. Однако не забывайте, что она формируется в окне модуля. Следующий стандартный шаг – установка операторов обработки ошибок. После этого заготовка программы принимает такой вид:

Private Sub Form_Open(Cancel As Integer)

On Error GoTo Err_Form_Open

. . . . . . . . . . .

Err_Form_Open:

MsgBox Err.Description

Resume Exit_Form_Open

End Sub

Теперь определите переменную Cod, которая необходима для выполнения процедуры:

Dim Cod As Integer

После этого введите содержательные операторы:

DoCmd.RunMacro «Макрос1»

Cod = DMax(«[Код Фирмы]», «Фирмы») + 1

Forms![Фирмы]![Код фирмы] = [Cod]

DoCmd.RunMacro «Макрос14»

Exit_Form_Open:

Exit Sub

Команда Макрос1 задает переход к новой записи, а Макрос14 устанавливает курсор в следующем поле, куда должна вводиться информация. Приведем полный текст процедуры:

Private Sub Form_Open(Cancel As Integer)

On Error GoTo Err_Form_Open

Dim Cod As Integer

DoCmd.RunMacro «Макрос1»

Cod = DMax(«[Код Фирмы]», «Фирмы») + 1

Forms![Фиpмы]![Koд фирмы] = [Cod]

DoCmd.RunMacro «Макрос14»

Exit_Form_Open:

Exit Sub

Err_Form_Open:

MsgBox Err.Description

Resume Exit_Form_Open

End Sub

Если

вы теперь откроете форму Фирмы, то обнаружите, что она сразу открывается на последней записи, которая еще пуста (рис. 12.14). Ее код уже установлен, а курсор находится в поле Название фирмы. Таким образом, форма готова к вводу новой информации. (Не будь написанной и выполненной процедуры, форма открылась бы на первой записи.)

Рис. 12.14

Удаление записи с установкой на последнюю запись

В каждой форме базы данных Контрольно-измерительные приборы созданы две дополнительные кнопки: Изменить запись и Удалить запись (см. рис. 12.15).

Рис. 12.15

В этом разделе будет рассмотрена процедура, на которой основано действие кнопки Удалить запись.

В принципе удаление записи – совершенно рутинная операция. Она выполняется штатными средствами Access и не заслуживает особого внимания. Если в нашем случае для нее предусмотрена специальная кнопка, то лишь потому, что есть и вторая часть задачи – установка на последнюю запись. Это значит, что в программу следует добавить некоторые новые функции, чтобы показать новые возможности при использовании процедуры. Покажем это на примере формы Назначение. Как и во всех предыдущих случаях, выполнение процедуры привязано к событию Щелкнуть по кнопке в таблице свойств кнопки Командная кнопка – см. рис. 12.16. Далее следует выбрать опцию Удалить запись.

Рис. 12.16

Как и раньше, с помощью кнопки

откройте окно модуля. Оно выглядит так же, как аналогичное окно, показанное на рис. 12.6. Процедура опять будет формироваться в окне модуля, но и на сей раз речь пойдет только о текстовых операторах.

Первые этапы работы уже хорошо вам знакомы: автоматическая вставка обрамляющих операторов, ввод операторов обработки ошибок и определение переменной Cod. Вот результат ваших трудов:

Private Sub Удалить_запись_Click

On Error GoTo Err_Назначение_Удалить_запись_Click

Dim Cod As Integer

…………………… Err_Назначение_Удалить_запись_Click:

MsgBox Err.Description

Resume Exit_Назначение_Удалить_запись_Click

End Sub

Далее вы блокируете вывод любых информационных сообщений, кроме сообщений об ошибках. Эту функцию выполняет программа МакросЗ (см. рис. 12.17). Чтобы запустить ее, выполните команду Установить сообщение, но в поле Аргументы команды укажите значение Нет, что и позволит блокировать вывод сообщений. Данная опция используется, когда пользователь не хочет, чтобы выполнение макроса прерывалось ради появления окон предупреждений. Однако сообщения об ошибках выводятся в любом случае. Кроме того, Microsoft Access выводит на экран все диалоговые окна, которые требуют от пользователя действий более сложных, чем щелчок по кнопке: например, когда надо ввести какой-либо текст или выбрать параметр из списка.

Рис. 12.17

Поделиться:
Популярные книги

Возвышение Меркурия. Книга 17

Кронос Александр
17. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 17

Повелитель механического легиона. Том III

Лисицин Евгений
3. Повелитель механического легиона
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том III

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Измена. Вторая жена мужа

Караева Алсу
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Вторая жена мужа

Мастер 9

Чащин Валерий
9. Мастер
Фантастика:
боевая фантастика
попаданцы
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Мастер 9

Генерал-адмирал. Тетралогия

Злотников Роман Валерьевич
Генерал-адмирал
Фантастика:
альтернативная история
8.71
рейтинг книги
Генерал-адмирал. Тетралогия

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Солдат Империи

Земляной Андрей Борисович
1. Страж
Фантастика:
попаданцы
альтернативная история
6.67
рейтинг книги
Солдат Империи

Идеальный мир для Лекаря 20

Сапфир Олег
20. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 20

Убивать, чтобы жить

Бор Жорж
1. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать, чтобы жить

Контракт на материнство

Вильде Арина
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Контракт на материнство

Элита элит

Злотников Роман Валерьевич
1. Элита элит
Фантастика:
боевая фантастика
8.93
рейтинг книги
Элита элит

Усадьба леди Анны

Ром Полина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Усадьба леди Анны

На границе империй. Том 8. Часть 2

INDIGO
13. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8. Часть 2