Идёт загрузка страницы...

htp://aptem.net.ru






На главную страничку учебника Visual Basic

События элемента Data

Элемент управления Data поддерживает три события, которые можно использовать для расширения приложения базы данных: Validate, Reposition и Error. Эти события позволяют переопределять некоторые моменты умолчательного поведения элемента управления Data.

Событие Validate

Чтобы проверить данные до того, как запись будет сохранена в базе данных, можно использовать событие Validate. Это событие происходит непосредственно перед тем, как Visual Basic переносит изменения из связанных элементов управления в базу данных и перемещает указатель текущей записи на другую запись базы данных.

Событие Validate можно использовать для вывода пользователям запроса на подтверждение изменений.

Объявление процедуры события Validate имеет следующий синтаксис:

Private Sub Data1_Validate (Action As Integer, Save As Integer)

Параметр Action

Параметр Action указывает операцию, которая обусловила событие Validate. Событие Validate может произойти в результате одной из следующих операций:

  • метод MoveFirst, MovePrevious, MoveNext, MoveLast;
  • метод AddNew;
  • метод Update;
  • метод Delete;
  • метод Find;
  • установка свойства Bookmark;
  • закрытие базы данных;
  • вызгрузка формы.

Чтобы отменить эти действия, нужно установить для параметра Action значение vbDataActionCancel.

Параметр Save

Параметр Save указывает, изменены ли связанные данные. Если Save — True, связанные данные были изменены. Чтобы отменить сохранение, можно установить Save в False. В следующем фрагменте кода у пользователя запрашивается подтверждение изменений в базе данных. Если пользователь отвечает Нет, изменения отменяются.

Private Sub Data1_Validate (Action As Integer, Save As Integer)

Dim iResponse As Integer
If Save = True Then
iResponse = MsgBox ("Сохранить изменения?", vbYesNo)
If iResponse = vbNo Then Save = False
Data1.UpdateControls ' Восстановить значения полей
End If
End If

End Sub

Событие Reposition

Событие Reposition используется для изменения вида формы или выполнения некоторых действий при перемещении к новой записи.

Это событие происходит, когда Visual Basic перемещает указатель текущей записи на другую запись в базе данных либо при первоначальном открытии базы данных.

В следующем фрагменте показано, как вывести на экран номер текущей записи с использованием свойства AbsolutePosition объекта Recordset:

Private Sub Data1_Reposition()
Data1.Caption = "Запись № " & Data1.Recordset.AbsolutePosition + 1
End Sub

Когда пользователь перемещается на новую запись, используя элемент управления Data, может потребоваться отображать данные в формы по-разному, в зависимости от конкретных значений текущей записи.

Например, в форме для работы с записями служащих могут по-разному отображаться данные для постоянных служащих, подрядчиков, служащих со сдельной оплатой или служащих с окладом. Чтобы задействовать выбор правильного режима отображения для каждой записи, можно поместить соответствующий код в событие Reposition.

В следующем фрагменте событие Reposition используется для изменения состояния формы:

Private Sub Data1_Reposition()

Data1.Caption = Datal.Recordset.AbsolutePosition
If Data1.Recordset("EmployeeID") > 5 Then ' Если № служащего > 5
Option1.Value = True ' Служащий - руководитель
Else
Option2.Value = True ' Иначе, служащий - подчиненный
End If
Data1.Caption = "Запись № " & Data1.Recordset.AbsolutePosition + 1

End Sub

Форма, содержащая эту процедуру, выглядит следующим образом:

Событие Error

Событие Error возникает, когда пользователь взаимодействует с элементом управления Data и происходит ошибка доступа к данным. Для добавления к элементу управления Data обработки ошибок можно использовать событие Error.

Например, если пользователь изменяет поле и затем щелкает кнопку элемента управления Data, чтобы переместиться к следующей записи, элемент управления Data модифицирует текущую запись. Если в течение модификации имеет место ошибка доступа к данным, происходит событие Error.

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

Вывод на экран сообщения об ошибке

Если к событию Error не добавлен код обработки ошибок и, когда пользователь взаимодействует с элементом управления Data, возвращается ошибка, Visual Basic выведет на экран сообщение об ошибке и продолжит выполнение приложения.

Если требуется подавить вывод стандартного сообщения об ошибке, можно установить параметр Response процедуры Еггог() в ноль и выводить на экран пользовательское сообщение об ошибке, как показано в следующем фрагменте:

Private Sub Data1_Error(DataErr As Integer, Response As Integer)

If DataErr = 3022 Then ' Дублирование ключевого значения - ошибка
MsgBox "Введите уникальный номер служащего"
txtEmpID.SetFocus
Response = 0
Else
Response = 1 ' Вывести стандартное сообщение
End If

End Sub

На главную страничку учебника Visual Basic