User guide
DOKuStar Validation Programming Manual Page • 16
Let us go through this step by step:
Private Sub Form_Load()
Dim MyApp As New DOKuStarDataset.Application '* declare dataset part of
DOKuStarValidation
'* make sure no project is open
If Not MyApp.Project Is Nothing Then
MyApp.Project.Close
End If
'* create the Project and fill the schema
MyApp.CreateProject
As before, we create an instance of DOKuStarValidationApplication. The next line is just some safe
programming: If the
app variable has already a Project object assigned, close it first, before creating a new one.
Next, we call a subroutine that shall fill the schema. So step right down to the schema object and hand it over to the
subroutine:
fillSchema MyApp.Project.DataSet.schema
Now for the subroutine itself:
'* first, define the DocumentTypes
Set docTypeLetter = schema.DocumentTypes.Add("Letter") ' add the "Letter" document type
docTypeLetter.FieldTypes.Add "TextField", "Sender" ' add the "Sender" field as TextField
The DataSchema object has got a DocumentTypes collection assigned to it. Collections appear frequently in
the DOKuStar Validation object list; they have got all the methods necessary to access elements, cycle through them,
etc. See the reference for a complete description.
Here, we add a new document type named
Letter. The Add method delivers a DocumentType object. This
DocumentType object has a FieldTypes collection, where we add a new FieldType. This Add method
takes two parameters: First, the field class (which is
TextField or TableField), second, the name of the new
field.
Set docTypeInvoice = schema.DocumentTypes.Add("Invoice") ' add the "Invoice" document type
Set fld = docTypeInvoice.FieldTypes.Add("TextField", "TotalAmount") ' add a TextField
Set fld = docTypeInvoice.FieldTypes.Add("TextField", "InvoiceDate") ' add a TextField
Set fld = docTypeInvoice.FieldTypes.Add("TableField", "Details") ' add a TableField
fld.FieldTypes.Add "TextField", "Quantity" ' add a column
fld.FieldTypes.Add "TextField", "SinglePrice" ' add a column
fld.FieldTypes.Add "TextField", "TotalPrice" ' add a column
We do the same for the Invoice document. We add two TextFields and a TableField. This time, we store
the resulting
FieldType object in a variable fld (which is obviously redundant for the two text fields, as it is
overwritten immediately), but we need to keep this object when adding the table field: To add the columns, use the
FieldTypes collection of the field itself, which holds a collection of sub-fields of the field. These sub-fields denote
the columns of the table.
After adding all the document types, we need to build the hierarchical structure, i.e. fill the
DocumentModel.
The
DocumentModel is an object assigned to the Schema. It has got a DocumentDescriptors collection,
whose
Add method takes a DocumentType object as a parameter. We add our top level DocumentType
object here (
Letter); if we had no hierarchical structure, we would add all document types here.
'* second, define the DocumentModel
Set docDescLetter = schema.DocumentModel.DocumentDescriptors.Add(docTypeLetter)
The
Add method returns a DocumentDescriptor object; this object in turn has a DocumentDescriptors
collection, where we can add our subdocuments: