Data1.Recordset.MovePrevious
Else
MsgBox "This was the last record in the table"
' (Эта запись в таблице была последней)
End If
End Sub
Метод Delete удаляет текущую запись. После операции удаления объект RecordSet не перемещается на другую запись автоматически. Вместо этого он остается на удаленной записи, пока не будет нажата одна из кнопок перемещения. Программа перемещается на следующую запись, если удаленная запись не была последней. В противном случае - перемещается на предыдущую запись. Если удаленная запись была единственной в таблице, то программа отобразит сообщение и останется на текущей записи.
Подпрограммы ShowButtons (Показать кнопки) и HideButtons (Спрятать кнопки) манипулируют свойством Visible кнопок. Кроме этого, они отображают и прячут, соответственно, элемент Data, чтобы пользователь мог завершить операцию ввода данных, пользуясь только кнопками ОК или Cancel.
Программа 17.10. Подпрограмма ShowButtons
Sub ShowButtons()
AddBttn Visible = True
DelBttn.Visible = True
OKBttn.Visible = False
CancelBttn.Visible = False
Data1.Visible = True
End Sub
Если открыть приложение Data Entry, то найдется несколько более интересных подпрограмм. Например, при возникновении события Error элемента управления Data программа отменяет операцию модификации и отображает сообщение об ошибке. Это происходит в том случае, если пользователь, редактируя текущую запись, вводит недопустимую информацию в одно из ее полей.
Программа 17.11. Событие Error элемента Data
Private Sub Datal_Error(DataErr As Integer, Response As Integer)
MsgBox Err Description
Response = 0
Data1.Recordset CancelUpdate
End Sub
При обработке события Validate элемента Data программа выясняет, был ли изменен какой-либо из связанных с данными элементов управления. Если это так, то она запрашивает пользователя, нужно ли сохранить изменения в таблице.
Программа 17.12. Событие Validate
Private Sub Datal_Validate(Action As Integer, Save As Integer)
Dim reply
If txtTitle.DataChanged Or txtISBN.DataChanged Or _
txtDescription.DataChanged Or txtSubject DataChanged _
Or txtComments.DataChanged Then
reply = MsgBox ("Record has been changed Save?", vbYesNo )
' (Запись была изменена Сохранить? ...)
If reply = vbNo Then
Save = False
End If
End If
End Sub
При обработке события Validate программа, обычно, учитывает значение параметра Action и реагирует согласно действию, вызвавшему ошибку.