ModuleSubstitution Table
La table ModuleSubstitution spécifie les champs configurables d’une base de données de module et fournit un modèle pour la configuration de chaque champ. L’outil utilisateur ou de fusion peut interroger cette table pour déterminer les opérations de configuration à effectuer. Cette table n’est pas fusionnée dans la base de données cible.
Les tableaux suivants ne peuvent pas contenir de champs configurables et ne doivent pas être répertoriés dans ce tableau :
Table ModuleSubstitution
La table ModuleSubstitution contient les colonnes suivantes.
Colonne | Type | Clé | Nullable |
---|---|---|---|
Table | identificateur | Y | N |
Ramer | texte | Y | N |
Colonne | identificateur | Y | N |
Valeur | texte | N | Y |
Colonnes
-
table
-
Cette colonne spécifie le nom de la table en cours de modification dans la base de données de module.
-
ligne
-
Ce champ spécifie les clés primaires de la ligne cible dans la table nommée dans la colonne Table. Plusieurs clés primaires sont séparées par des points-virgules. Les lignes cibles sont sélectionnées pour modification avant toute modification apportée à la table cible. Si un enregistrement de la table ModuleSubstitution modifie le champ de clé primaire d’une ligne cible, d’autres enregistrements de la table ModuleSubstitution sont appliqués en fonction des données de clé primaire d’origine, et non des substitutions de clés primaires. L’ordre de substitution de ligne n’est pas défini.
Les valeurs de cette colonne sont toujours au format spécial CMSM . Un point-virgule (';') littéral ou un signe égal ('=') peut être ajouté en préfixant le caractère avec une barre oblique inverse. '\'. Une valeur Null pour une clé est indiquée par une valeur null, un point-virgule de début, deux points-virgules consécutifs ou un point-virgule de fin, selon que la valeur null est une valeur de colonne clé unique, première, intermédiaire ou finale.
-
colonne
-
Ce champ spécifie la colonne cible dans la ligne nommée dans la colonne Ligne. Si plusieurs lignes de la table ModuleSubstitution modifient différentes colonnes de la même ligne cible, toutes les substitutions de colonnes sont effectuées avant l’insertion de la ligne modifiée dans la base de données. L’ordre de substitution de colonne n’est pas défini.
-
valeur
-
Cette colonne contient une chaîne qui fournit un modèle de mise en forme pour les données remplacées dans le champ cible spécifié par table, ligne et colonne. Lorsqu’une chaîne de substitution du formulaire [=ItemA] est rencontrée, la chaîne, y compris les caractères entre crochets, est remplacée par la valeur de l’élément « ItemA » configurable. L’élément configurable « ItemA » est spécifié dans la colonne Name de la table ModuleConfiguration et sa valeur est fournie par l’outil de fusion. Si l’outil de fusion refuse de fournir une valeur pour un élément d’une chaîne de remplacement, la valeur par défaut spécifiée dans la colonne DefaultValue de la table ModuleConfiguration est remplacée. Si une chaîne fait référence à un élément non dans la table ModuleConfiguration, la fusion échoue.
- Cette colonne utilise format spécial CMSM. Un point-virgule (';') littéral ou un signe égal ('=') peut être ajouté à la table en préfixant le caractère avec une barre oblique inverse. '\'.
- Le champ Valeur peut contenir plusieurs chaînes de substitution. Par exemple, la configuration des éléments « Food1 » et « Food2 » dans la chaîne : « [=Food1] est bonne, mais [=Food2] est préférable car [=Food2] est plus nutritif ».
- Les chaînes de remplacement ne doivent pas être imbriquées. Le modèle « [=AB[=CDE]] » n’est pas valide.
- Si le champ Valeur est null et que le champ cible n’est pas nullable, la fusion échoue et un objet d’erreur de type msmErrorBadNullSubstitution est créé et ajouté à la liste d’erreurs. Pour plus d’informations, consultez les types d’erreurs décrits dans get_Type Function.
- Si le champ Valeur correspond au GUID Null : {00000000-0000-0000-0000-000000000000}, le GUID Null est remplacé par le nom de la fonctionnalité avant la fusion de la ligne dans le module. Pour plus d’informations, consultez fonctionnalités de référencement dans les modules de fusion.
- Le modèle dans le champ Valeur est évalué avant d’être inséré dans le champ cible. La substitution en ligne est effectuée avant de remplacer les fonctionnalités.
- Si la colonne Valeur est évaluée à une chaîne de caractères entiers uniquement (avec un type facultatif + ou -), la chaîne est convertie en entier avant d’être remplacée en champ cible du type de format entier . Si le modèle prend la valeur d’une chaîne qui ne se compose pas seulement de caractères entiers (et d’un résultat facultatif + ou -), le résultat ne peut pas être remplacé par un champ cible entier. La tentative d’insertion d’un entier dans un champ entier entraîne l’échec de la fusion et ajoute un objet d’erreur msmErrorBadSubstitutionType à la liste d’erreurs.
- Si la colonne cible spécifiée dans les champs Tableau et Colonne est un type de format de texte , et que l’évaluation du champ Valeur génère un type de format entier , une représentation décimale du nombre est insérée dans le champ de texte cible.
- Si le champ cible est un type de format entier , et que le champ Valeur se compose d’une liste non délimitée d’éléments dans format de champ de bits, la valeur du champ cible est combinée à l’aide de l’opérateur au niveau du bit ET avec l’inverse du niveau de bits OR de toutes les valeurs de masque des éléments, ensuite combiné à l’aide du 'opérateur OR au niveau du bit avec chacun des éléments de champ de bits ou entiers lorsqu’ils sont masqués par leurs valeurs de masque correspondantes. Essentiellement, cela définit explicitement les bits des propriétés aux valeurs fournies, mais laisse tous les autres bits dans la cellule seul.
- Si le champ Valeur est évalué à un type de format de clé et est une clé dans une table qui utilise plusieurs clés primaires, le nom de l’élément peut être suivi d’un point-virgule et d’une valeur entière qui indique l’index basé sur 1 dans l’ensemble de valeurs qui composent ensemble une clé primaire. Si aucun entier n’est spécifié, la valeur 1 est utilisée. Par exemple, la table de contrôle a deux colonnes clés primaires, Dialog_ et Control. La valeur d’un élément « Item1 » qui est une clé dans la table de contrôles sera de la forme « DialogName ; ControlName », où DialogName est la valeur de la table Dialog_ et ControlName est la valeur de la colonne Control. Pour remplacer simplement ControlName, la chaîne de substitution [=Item1 ; 2] doit être utilisé.
Remarques
La table ModuleSubstition est utilisée par modules de fusion configurables. Mergemod.dll version 2.0 ou ultérieure est nécessaire pour créer un module de fusion configurable.
Pour garantir la compatibilité avec les versions de Mergemod.dll antérieures à la version 2.0, la table ModuleConfiguration et les tables ModuleSubstitution doivent être incluses dans la table ModuleIgnoreTable de chaque module.