Partager via


Validation interne

Lors de la création d’un package d’installation, vous pouvez utiliser la fonction MsiViewModify ou la méthode View.Modify pour vous assurer que les données que vous entrez sont correctement correctes. Pour plus d’informations, consultez Méthode Modify. Au niveau le plus bas, la colonne d’une table de base de données peut stocker des entiers (courts ou longs), des chaînes ou des données binaires. Toutefois, un package d’installation nécessite des entiers ou des chaînes spécifiques dans certaines tables. Ces spécifications sont conservées dans la table _Validation. Par exemple, la colonne FileName de la table Fichier est une colonne de chaîne, mais elle stocke spécifiquement un nom de fichier. Par conséquent, non seulement votre entrée doit être une chaîne, mais elle doit également respecter les conditions requises pour nommer des fichiers.

Les différentes valeurs d’énumération de validation utilisées avec la fonction MsiViewModify permettent une validation immédiate à différents niveaux. L’énumération MSIMODIFY_VALIDATE_FIELD peut être utilisée pour valider des champs individuels d’un enregistrement. Il ne valide pas les clés étrangères. L’énumération MSIMODIFY_VALIDATE valide une ligne entière et inclut la validation de clé étrangère. Si vous insérez une nouvelle ligne dans une table, utilisez l’énumération MSIMODIFY_VALIDATE_NEW pour vérifier que vous ajoutez des données valides et que vous utilisez des clés primaires uniques. Une insertion échoue si les clés primaires ne sont pas uniques. Si un appel à MsiViewModify avec l’une des énumérations de validation retourne une erreur, vous pouvez effectuer des appels répétés à MsiViewGetError pour diagnostiquer le problème. MsiViewGetError indique la colonne où l’erreur s’est produite, ainsi que la valeur d’énumération pour aider à résoudre le problème. Pour plus d’informations, consultez méthode GetError.

Vous pouvez également utiliser la validation interne pour vous assurer que d’autres auteurs entrent correctement des données dans votre table personnalisée. Ajoutez chacune des colonnes de votre table personnalisée à la table _Validation en utilisant le nom de la table personnalisée et le nom de colonne comme clé primaire. Fournissez une description ou un objectif de chaque colonne dans la colonne Description de la table _Validation. Entrez les exigences applicables pour chaque colonne à l’aide des colonnes Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Category et Set :

  • Si la colonne est Nullable, entrez un « Y ». Si ce n’est pas le cas, entrez un « N ».
  • Si la colonne est une colonne entière et peut contenir une plage d’entiers, entrez cette plage à l’aide des colonnes MinValue et MaxValue.
  • Les colonnes clés étrangères sont identifiées à l’aide des colonnes KeyTable et KeyColumn.
  • Pour les colonnes de chaîne, spécifiez une catégorie telle que Nom de fichier, GUID ou Identificateur. Pour plus d’informations, consultez types de données de colonne.
  • Si les données ne peuvent se rapporter qu’à un nombre spécifique de valeurs (chaîne ou entier), utilisez la colonne Set pour répertorier les valeurs acceptables.

Voici une liste des colonnes (en plus de la table, de la colonne et de la description) dans la table _Validation qui peut être renseignée si votre colonne est du type spécifié. (Notez que vous n’avez pas besoin de remplir toutes les colonnes.)

Type Colonnes
Entier Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Set
Corde Nullable, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue
Binaire Nullable, Category (Category must be « Binary »)

 

Les environnements de création peuvent utiliser des MSIMODIFY_VALIDATE_DELETE. Cette énumération suppose que vous souhaitez supprimer la ligne. Aucune validation de champ ou de clé étrangère n’est effectuée. Cette énumération effectue en fait une validation de clé étrangère inversée. Il vérifie la table _Validation pour les références dans les colonnes KeyTable et KeyColumn de la table à laquelle appartient la ligne « supprimée ». S’il existe des colonnes qui répertorient la table contenant la ligne « supprimée » en tant que clé étrangère potentielle, elle passe à travers cette colonne pour voir si l’une des valeurs de référence dans la ligne « supprimée » est effectuée. Un retour d’erreur signifie que vous interrompez l’intégrité relationnelle de la base de données en supprimant la ligne.