Si la vérification personnalisée que vous avez définie prend en charge la correction automatique, vous pouvez saisir le corps de cette fonction dans l'onglet Script de correction automatique de la feuille de propriétés de vérification personnalisée.
La correction automatique est visible dans la boîte de dialogue Paramètres de vérification de modèle, elle est sélectionnée par défaut si vous cochez la case Exécuter la correction automatique par défaut dans l'onglet Général de la feuille de propriétés de la vérification personnalisée.
Par défaut, l'onglet Script de correction automatique affiche les éléments de script suivants :
%Fix% est le nom de la fonction, il est passé sur le paramètre obj. Il est affiché sous forme de variable, cette variable étant une concaténation de nom du fichier de ressource, du nom de la métaclasse courante, du nom du stéréotype ou critère ainsi que du nom de la correction. Si l'un de ces noms comporte un espace, ce dernier est remplacé par un trait de soulignement
La variable outmsg est un paramètre de la fonction de correction. Vous devez spécifier le message de correction qui va s'afficher lors de l'exécution du script de correction
La ligne de valeur de résultat qui indique si la correction a fonctionné
Nous allons reprendre l'exemple de la section Définition du script d'une vérification personnalisée afin de définir un script de correction automatique qui supprime de l'index les colonnes ayant un type de données incorrect.
Par défaut, la fonction est déclarée au début du script. Vous ne devez pas modifier cette ligne.
Dim c 'temporary index column Dim col 'temporary column Dim position Dim DT_col
%Fix% = False If obj.type = "LF" or obj.type = "HG" or obj.type = "CMP" or obj.type ="HNG" Then For Each c In obj.IndexColumns Set col = c.column position = InStr(col.datatype,"(") If position <> 0 Then DT_col = Left(col.datatype, position -1) Else DT_col = col.datatype End If If (Ucase(DT_col) = "VARCHAR") And (col.length > 255) Then outmsg = "Automatic correction has removed column " & col.Name & " from index." c.Delete %Fix% = True End If Next End If