ModuleSubstitution テーブル

ModuleSubstitution テーブルには、モジュール データベースの構成可能なフィールドを指定します。また、各フィールドの構成用のテンプレートが用意されています。 ユーザーまたはマージ ツールを使ってこのテーブルを照会し、実行する構成操作を決定することができます。 このテーブルはターゲット データベースにマージされません。

次のテーブルには構成可能なフィールドを含めることができないので、このテーブルには登録しないでください。

ModuleSubstitution テーブル

ModuleConfiguration テーブル

ModuleExclusion テーブル

ModuleSignature テーブル

ModuleSubstitution テーブルには次の列があります。

Column 種類 キー Nullable
テーブル Identifier Y N
テキスト Y N
Identifier Y N
[テキスト] N Y

 

[列]

Table

この列には、モジュール データベースで変更されるテーブルの名前を指定します。

Row

このフィールドには、Table 列に指定されているテーブルのターゲット行の主キーを指定します。 複数の主キーはセミコロンで区切ります。 ターゲット テーブルに変更を加える前に、変更対象のターゲット行を選びます。 ModuleSubstitution テーブルの 1 つのレコードでターゲット行の主キー フィールドを変更した場合、主キーの置換の結果ではなく、元の主キー データに基づいて、ModuleSubstitution テーブルの他のレコードが適用されます。 行置換の順序は定義されていません。

この列の値は、常に CMSM 特殊形式です。 リテラルのセミコロン (';') または等号 ('=') を追加するには、その文字の前にバックスラッシュを付けます。 '\'. キーの null 値は、null 値が単独、先頭、中間、末尾のいずれのキー列値かに応じて、null、先頭のセミコロン、連続する 2 つのセミコロン、または末尾のセミコロンで示します。

Column

このフィールドには、Row 列に指定されている行のターゲット列を指定します。 ModuleSubstitution テーブルの複数の行によって、同じターゲット行の複数の列が変更される場合、変更された行がデータベースに挿入される前に、すべての列置換が実行されます。 列置換の順序は定義されていません。

Value

この列には、Table、Row、Column に指定されているターゲット フィールドに、置換対象のデータの書式設定テンプレートを提供する文字列が含まれています。 形式 [=ItemA] の置換文字列がある場合、角かっこ文字を含む文字列は、構成可能な "ItemA" の値で置換されます。構成可能な項目 "ItemA" は、ModuleConfiguration テーブルの Name 列で指定され、その値はマージ ツールによって提供されます。 置換文字列のいずれかの項目に対してマージ ツールが値の提供を拒否した場合、ModuleConfiguration テーブルの DefaultValue 列に指定された既定値が置換されます。 文字列が ModuleConfiguration テーブルにはない項目を参照すると、マージは失敗します。

  • この列は CMSM 特殊形式を使います。 リテラルのセミコロン (';') または等号 ('=') をテーブルに追加するには、その文字の前にバックスラッシュを付けます。 '\'.
  • Value フィールドには、複数の置換文字列を含めることができます。 たとえば、"[=Food1] is good, but [=Food2] is better because [=Food2] is more nutritious" ([=Food1] は良いものですが、[=Food2] の方が栄養価が高いため [=Food2] の方が優れています) という文字列の項目 "Food1" と "Food2" の構成です。
  • 置換文字列を入れ子にすることはできません。 テンプレート "[=AB [=CDE]]" は無効です。
  • Value フィールドが null と評価され、ターゲット フィールドが null 非許容の場合、マージは失敗し、msmErrorBadNullSubstitution 型のエラー オブジェクトが作成され、エラー一覧に追加されます。 詳細については、get_Type 関数のページに記載されているエラーの種類を参照してください。
  • Value フィールドが null GUID {00000000-0000-0000-0000-000000000000} に評価された場合、行がモジュールにマージされる前に、null GUID は機能の名前に置換されます。 詳細については、「マージ モジュールの機能の参照」を参照してください。
  • Value フィールドのテンプレートは、ターゲット フィールドに挿入される前に評価されます。 行への置換は、機能の置換前に行われます。
  • Value 列が整数文字のみの文字列 (と省略可能な + または -) に評価される場合、文字列は整数に変換されてから、整数形式の型のターゲット フィールドに置換されます。 テンプレートが整数文字 (と省略可能な + または -) のみで構成されていない文字列に評価される場合、結果を整数のターゲット フィールドに置換することはできません。 整数フィールドに整数以外を挿入しようとすると、マージに失敗し、エラー一覧に msmErrorBadSubstitutionType エラー オブジェクトが追加されます。
  • Table フィールドと Column フィールドに指定されたターゲット列がテキスト形式の型であり、Value フィールドの評価結果が整数形式の型である場合、数値の 10 進数表現がターゲット テキスト フィールドに挿入されます。
  • ターゲット フィールドが整数形式であり、Value フィールドがビットフィールド形式の区切られていない項目一覧で構成されている場合、ターゲット フィールドの値は、ビット単位 AND 演算子を使って、項目のすべてのマスク値のビット単位 OR の反転と結合されます。次に、ビット単位 OR 演算子を使って、対応するマスク値でマスクされている整数またはビットフィールド項目のそれぞれと結合されます。 基本的に、これにより、プロパティのビットは指定した値に明示的に設定されますが、セル内の他のビットはすべてそのままです。
  • Value フィールドがキー形式の型に評価され、複数の主キーを使うテーブルのキーである場合、その項目名、セミコロン、1 から始まるインデックスを示す整数の順に指定して、合わせて主キーになる一連の値を構成できます。 整数を指定しない場合は、値 1 が使われます。 たとえば、Control テーブルには Dialog_ と Control という 2 つの主キー列があります。 Control テーブルのキーである項目 "Item1" の値は "DialogName;ControlName" という形式になります。この DialogName は Dialog_ テーブルの値であり、ControlName は Control 列の値です。 単に ControlName を置換する場合は、置換文字列 [=Item1;2] を使ってください。

解説

ModuleSubstition テーブルは構成可能なマージ モジュールによって使われます。 構成可能なマージ モジュールを作成するには、Mergemod.dll バージョン 2.0 以降が必要です。

バージョン 2.0 より前のバージョンの Mergemod.dll と互換性を確保するには、ModuleConfiguration テーブルと ModuleSubstitution テーブルをすべてのモジュールの ModuleIgnoreTable テーブルに追加する必要があります。