Owner's manual

DOKuStar Validation for Ascent Capture Page 8
Here is the source code for this example:
Dim WithEvents Amount As FieldType
Private Sub Application_OnProjectLoaded(ByVal App As Application)
Set Amount = App.Project.DataSet.Schema.DocumentTypes("Invoice").FieldTypes("Amount")
End Sub
Private Function Amount_OnFieldChanging(ByVal Field As Field, ByVal SubField as Field, ByVal
VerifyEventArgs As VerifyEventArgs) As Boolean
Amount_OnFieldChanging = True 'Preset return value
If Val(Field.Value) > 1000 Then
If MsgBox("You entered a value > 1000. Please Confirm.", vbOKCancel) = vbCancel Then
Amount_OnFieldChanging = False 'User clicked cancel, so stay in the field
End If
End If
End Function
Let us go through this line by line:
Dim WithEvents Amount As FieldType
You define a variable Amount that shall be used in the VBA code. This variable has the type FieldType, which is
a notion from the
Schema part of the Dataset. This variable shall get events (WithEvents), one of these
events is used below.
Private Sub Application_OnProjectLoaded(ByVal App As Application)
Set Amount = App.Project.DataSet.Schema.DocumentTypes("Invoice").FieldTypes("Amount")
End Sub
This subroutine will be called when the project is loaded, i.e. right after opening the batch. The only thing that is
done here is that you assign the variable
Amount, which you defined above, to the right field type: set to the
FieldType Amount on the DocumentType Invoice. The names you use here are the names from the
Ascent Capture definition: the form type
Invoice has an index field Amount (to be more precise: form type
Invoice is assigned to a document class which has an index field Amount).
Private Function Amount_OnFieldChanging(ByVal Field As Field, ByVal SubField As Field, ByVal
VerifyEventArgs As VerifyEventArgs) As Boolean
Defining this function enables to catch the FieldChanging event for the amount field: Whenever the user changes
the amount on an invoice, this function will be called and gets an Object
Field as the first parameter, which is the
field itself. This object has the type
Field, which is a notion from the Data part of the Dataset.
The function is expected to return a boolean; when returning
False, the changing is aborted, i.e. the old value
(before the user typed his changes) is restored and the focus stays on this field. When returning
True, the changes
are accepted, and the focus usually moves to the next field (the “usually” will be explained shortly).
Amount_OnFieldChanging = True 'Preset return value
The boolean return value is preset to True.
If Val(Field.Value) > 1000 Then
Now take the Field received as a parameter and determine the field’s value. Since a value of a field is always a
string, the
Val function is be used to convert to a double integer.
If MsgBox("You entered a value > 1000. Please Confirm.", vbOKCancel) = vbCancel Then
Amount_OnFieldChanging = False 'User clicked cancel, so stay in the field
End If
Open the message box. If the user hits Cancel, set the return value to False, thus aborting the change and
restoring the old contents.