Tabella ModuleSubstitution
La tabella ModuleSubstitution specifica i campi configurabili di un database del modulo e fornisce un modello per la configurazione di ogni campo. Lo strumento utente o merge può eseguire query su questa tabella per determinare le operazioni di configurazione da eseguire. Questa tabella non viene unita al database di destinazione.
Le tabelle seguenti non possono contenere campi configurabili e non devono essere elencati in questa tabella:
Tabella ModuleSubstitution
La tabella ModuleSubstitution include le colonne seguenti.
Colonna | Tipo | Chiave | Nullable |
---|---|---|---|
Tabella | Identificatore | S | N |
Riga | Text | S | N |
Colonna | Identificatore | S | N |
Valore | Text | N | S |
Colonne
-
Tavolo
-
Questa colonna specifica il nome della tabella da modificare nel database del modulo.
-
Riga
-
Questo campo specifica le chiavi primarie della riga di destinazione nella tabella denominata nella colonna Table. Più chiavi primarie sono separate da punti e virgola. Le righe di destinazione vengono selezionate per la modifica prima che vengano apportate modifiche alla tabella di destinazione. Se un record nella tabella ModuleSubstitution modifica il campo chiave primaria di una riga di destinazione, gli altri record nella tabella ModuleSubstitution vengono applicati in base ai dati della chiave primaria originale, non alla risultante delle sostituzioni della chiave primaria. L'ordine di sostituzione delle righe non è definito.
I valori in questa colonna sono sempre in formato speciale CMSM. È possibile aggiungere un punto (';') e virgola letterale o un segno uguale ('=') prefissendo il carattere con una barra rovesciata. '\'. Un valore Null per una chiave è rappresentato da un valore Null, da un punto e virgola iniziale, da due punti e virgola consecutivi o da un punto e virgola finale, a seconda che il valore Null sia un valore di sola, primo, medio o colonna chiave finale.
-
Colonna
-
Questo campo specifica la colonna di destinazione nella riga denominata nella colonna Row. Se più righe nella tabella ModuleSubstitution modificano colonne diverse della stessa riga di destinazione, tutte le sostituzioni di colonna vengono eseguite prima che la riga modificata venga inserita nel database. L'ordine della sostituzione della colonna non è definito.
-
Valore
-
Questa colonna contiene una stringa che fornisce un modello di formattazione per i dati sostituiti nel campo di destinazione specificato da Table, Row e Column. Quando viene rilevata una stringa di sostituzione del modulo [=ItemA], la stringa, inclusa la parentesi quadre, viene sostituita dal valore per l'elemento "ItemA" configurabile. L'elemento configurabile "ItemA" viene specificato nella colonna Name della tabella ModuleConfiguration e il relativo valore viene fornito dallo strumento di merge. Se lo strumento di merge rifiuta di specificare un valore per qualsiasi elemento in una stringa sostitutiva, il valore predefinito specificato nella colonna DefaultValue della tabella ModuleConfiguration viene sostituito. Se una stringa fa riferimento a un elemento non nella tabella ModuleConfiguration, l'unione ha esito negativo.
- Questa colonna usa il formato speciale CMSM. Un punto (';') e virgola letterale o segno di uguale ('=') può essere aggiunto alla tabella prefissendo il carattere con una barra rovesciata. '\'.
- Il campo Valore può contenere più stringhe di sostituzione. Ad esempio, la configurazione degli elementi "Food1" e "Food2" nella stringa: "[=Food1] è buona, ma [=Food2] è migliore perché [=Food2] è più nutriente".
- Le stringhe di sostituzione non devono essere annidate. Il modello "[=AB[=CDE]]" non è valido.
- Se il campo Value restituisce null e il campo di destinazione non è nullable, l'unione ha esito negativo e un oggetto error di tipo msmErrorBadNullSubstitution viene creato e aggiunto all'elenco di errori. Per informazioni dettagliate, vedere i tipi di errore descritti in get_Type Funzione.
- Se il campo Valore restituisce il GUID null: {00000000-0000-0000-0000-000000000000}, il GUID Null viene sostituito dal nome della funzionalità prima che la riga venga unita al modulo. Per informazioni dettagliate, vedere Riferimenti alle funzionalità nei moduli di merge.
- Il modello nel campo Valore viene valutato prima di essere inserito nel campo di destinazione. La sostituzione in una riga viene eseguita prima di sostituire tutte le funzionalità.
- Se la colonna Value restituisce una stringa di solo caratteri integer (con un valore facoltativo + o -), la stringa viene convertita in un intero prima di essere sostituito in un campo di destinazione del tipo di formato intero. Se il modello restituisce una stringa che non è costituita solo da caratteri interi (e un valore facoltativo + o -) il risultato non può essere sostituito in un campo di destinazione intero. Il tentativo di inserire un valore non intero in un campo integer causa l'esito negativo dell'unione e aggiunge un oggetto errore msmErrorBadSubstitutionType all'elenco di errori.
- Se la colonna di destinazione specificata nei campi Tabella e Colonna è un tipo di formato testo e la valutazione del campo Valore genera un tipo formato intero, una rappresentazione decimale del numero viene inserita nel campo testo di destinazione.
- Se il campo di destinazione è un tipo di formato intero e il campo Value è costituito da un elenco non delimitato di elementi in Formato bitfield, il valore nel campo di destinazione viene combinato usando l'operatore AND bit per bit con l'operatore BIT per bit or di tutti i valori maschera degli elementi della maschera, quindi combinato usando l'operatore OR bit per bit con ognuno degli elementi integer o bitfield quando vengono mascherati dai relativi valori maschera. Essenzialmente, questo imposta in modo esplicito i bit dalle proprietà ai valori specificati, ma lascia solo tutti gli altri bit nella cella.
- Se il campo Valore restituisce un tipo di formato chiave ed è una chiave in una tabella che usa più chiavi primarie, il nome dell'elemento può essere seguito da un punto e virgola e da un valore intero che indica l'indice basato su 1 nel set di valori che insieme fanno una chiave primaria. Se non viene specificato alcun intero, viene usato il valore 1. Ad esempio, la tabella Control include due colonne chiave primaria, Dialog_ e Control. Il valore di un elemento "Item1" che è una chiave nella tabella Control sarà del modulo "DialogName; ControlName", dove DialogName è il valore nella tabella Dialog_ e ControlName è il valore nella colonna Control. Per sostituire solo ControlName, deve essere usata la stringa di sostituzione [=Item1;2].
Commenti
La tabella ModuleSubstition viene usata dai moduli di merge configurabili. Mergemod.dll versione 2.0 o successiva è necessario creare un modulo di merge configurabile.
Per garantire la compatibilità con le versioni di Mergemod.dll precedenti alla versione 2.0, le tabelle ModuleConfiguration e ModuleSubstitution devono essere incluse nella tabella ModuleIgnoreTable di ogni modulo.