Cet exemple montre comment vérifier les données d'un tableau. Cette règle vérifie si les données du tableau correspondent à la valeur du champ obtenu. Le tableau contient des colonnes comportant des prix et des quantités pour certains produits. La règle a été écrite au niveau d'une section contenant le tableau et le champ qui en résulte.
[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 d'un composant ActiveX
Le code fourni ici est un code de classe CheckDoc issu du projet AutomationRule, qui est utilisé dans les scripts mentionnés ci-dessus.
Option Explicit
' Vérifie si les données du tableau correspondent au résultat
' column1 - colonne de prix
' column2 - colonne de quantités
' resultField - champs obtenus (<Total> ou équivalent )
' docObj - nœud de document en cours de vérification
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
' récapitulatif des données du tableau
sum = 0
For i = 0 To costItems.Count - 1
curCost = costItems.Item(i).Value
curNum = numItems.Item(i).Value
sum = sum + curNum * curCost
Next
' Précision de la comparaison – résultat arrondi au 2ème chiffre après la virgule
result = resultField.Value
If (Round(result, 2) = Round(sum, 2)) Then
docObj.CheckSucceeded = True
Else
docObj.CheckSucceeded = False
docObj.ErrorMessage = "Les données du tableau ne correspondent pas à la valeur du résultat"
resultField.Suggest sum
End If
Exit Sub
err_h:
docObj.ErrorMessage = Err.Description
docObj.CheckSucceeded = False
End Sub