In diesem Beispiel wird die Überprüfung von Tabellendaten veranschaulicht. Die Regel überprüft, ob die Tabellendaten dem Wert im Ergebnisfeld entsprechen. Die Tabelle enthält Spalten mit Preisen und Mengen bestimmter Waren. Die Regel wurde auf der Ebene eines Bereichs erstellt, der die Tabelle und das Ergebnisfeld enthält.
[VBScript]
dim autoRule
set autoRule = CreateObject( "AutomationRule.CheckDoc" )
autoRule.CheckResult me.FIELD("cost"), me.FIELD("number"), _
me.FIELD("Result"), me
[JScript]
var autoRule = new ActiveXObject( "AutomationRule.CheckDoc" );
autoRule.CheckResult( Field("cost"), Field("number"),
Field("Result"), this );
Code einer ActiveX-Komponente
Der angegebene Code entstammt einer CheckDoc-Klasse aus dem Projekt AutomationRule, das in den oben genannten Skripten verwendet wird.
Option Explicit
' Überprüft, ob die Tabellendaten mit dem Ergebnis übereinstimmen
' column1 - Preisspalte
' column2 - Mengenspalte
' resultField - Ergebnisfeld (<Total> oder Entsprechung)
' docObj - der überprüfte Dokumentknoten
Public Sub CheckResult(ByRef column1 As Object, ByRef column2 As Object, _
ByRef resultField As Object, ByRef docObj As Object)
On Error GoTo err_h
Dim costItems AsObject, numItems AsObject
Dim curCost AsDouble, curNum AsLong, sum AsDouble
Dim result AsDouble
Dim i AsLong
Set costItems = column1.Items
Set numItems = column2.Items
' summing up table data
sum = 0
For i = 0 To costItems.Count - 1
curCost = costItems.Item(i).Value
curNum = numItems.Item(i).Value
sum = sum + curNum * curCost
Next
' Genauigkeit des Vergleichs: das Ergebnis wird auf 2 Nachkommastellen gerundet
result = resultField.Value
If (Round(result, 2) = Round(sum, 2)) Then
docObj.CheckSucceeded = True
Else
docObj.CheckSucceeded = False
docObj.ErrorMessage = "Table data does not match the resulting value"
resultField.Suggest sum
End If
Exit Sub
err_h:
docObj.ErrorMessage = Err.Description
docObj.CheckSucceeded = False
End Sub