
Пример 8
Private Sub Form_AfterUpdate()
Dim i As Integer
For i = 0 To Me.Count - 1
If Me(i).Tag = "1" Then
Me(i).DefaultValue = """" & Me(i).Value & """"
End If
Next
End Sub
В процедуре используется форма обращения Me к форме, в модуле которой расположена данная процедура обработки события. Цикл For перебирает все элементы управления формы, пронумерованные от нуля до Me.Count - 1. У каждого элемента управления проверяется его свойство Tag (дополнительные сведения). Если в дополнительные сведения записана единица, то свойству DefaultValue (значение по умолчанию) присваивается значение Value этого элемента (Me(i)). Значением свойства DefaultValue должен быть текст. Правая часть оператора присваивания должна быть заключена в кавычки. Для представления текста в виде кавычек нужно повторить кавычки 4 раза (пара кавычек в кавычках), так как в текстовой строке для представления кавычек используют пару кавычек.
Если для поля в таблице или для элемента управления формы в режиме конструктора устанавливается свойство "Значение по умолчанию", MS Access при выводе новой записи в форме автоматически вставляет значение этого свойства в данное поле или в данный элемент. Присваивание свойству "Значение по умолчанию" в режиме конструктора полезно в том случае, если нужно использовать некоторое значение во всех новых записях или применить выражение, включаемое во все новые записи. Так, если это свойство содержит выражение =Date(), то в данном элементе управления всегда будет выводиться текущая дата. Чтобы указать, что мы имеем дело не с выражением или именем поля, обычный текст заключается в кавычки.
Процедура обработки событий Form_AfterUpdate при каждом обновлении формы проверяет свойство Tag каждого элемента управления. Чтобы текущее значение элемента управления стало значением по умолчанию, нужно перейти в режим конструктора и установить его свойство "Дополнительные сведения" в единицу. Процедура Form_AfterUpdate облегчает ввод данных в поле, значения в котором от записи в записи редко изменяются.
Пример 9
Sub Должность_AfterUpdate()
Dim rst As Recordset
Dim Критерий As String, k As Integer
Критерий = "Должность = """ & Должность & """"
Set rst = Me.RecordsetClone
rst.FindLast Критерий
If Not rst.NoMatch Then
For k = 0 To Me.Count - 1
If Me(k).Tag = "1" Then
Me(k).Value = rst (Me(k).Name)
End If
Next
End If
End Sub
В данном примере используется другой метод облегчения ввода данных путем поиска информации в некоторой записи и копирования ее данных в новую запись.
Критерий поиска записи представляет собой строку и заключен в кавычки. Сам критерий имеет форму равенства. Справа и слева от знака равенства - поле Должность. Правая Должность заключена в кавычки и в процессе поиска остается неизменной. Это название должности, которое введено в соответствующее поле новой записи.
Метод FindLast находит последнюю запись, в которой та же должность, что и только что введенная. Если запись с такой же должностью найдена, цикл For обеспечивает просмотр всех элементов управления формы. Если свойство Tag содержит единицу, выполняется присваивание свойству Value этого элемента результата вычисления выражения rst(frm(k).Name). В этом выражении используется элемент строки базового набора, найденной методом FindLast. Значение этого поля присваивается соответствующему элементу новой записи.
Пусть, например, базовая таблица имеет вид
Преподаватель |
Фамилия |
Степень |
Звание |
Должность |
1 |
Блохин |
|
|
Ассистент |
2 |
Тараканов |
Д.т.н |
Доцент |
Профессор |
3 |
Комаров |
К.т.н |
Доцент |
Доцент |
4 |
Бабочкин |
Д.т.н |
Профессор |
Профессор |
5 |
Шмелев |
К.т.н |
|
Ст.преподаватель |
6 |
|
К.т.н |
Доцент |
Доцент |
Элемент управления Должность представляет собой раскрывающийся список со свойствами:
Имя элемента управления |
Должность |
Данные |
Должность |
Тип источника строк |
Список значений |
Источник строк |
Ассистент; Ст.преподаватель; Доцент; Профессор |
Число столбцов |
1 |
Заглавия столбцов |
Нет |
Связанный столбец |
1 |
У полей Степень и Звание в свойство Tag записана единица.
В новой строке из раскрывающегося списка выбрана должность "Доцент". Степень и звание автоматически вставлены из строки 3 (это последняя строка с такой должностью). В новую строку осталось ввести только номер преподавателя и фамилию.