ModuleSubstitution Table

ModuleSubstitution 資料表會指定模組資料庫的可設定欄位,並提供每個欄位組態的範本。 使用者或合併工具可能會查詢此資料表,以判斷要執行的組態作業。 此資料表不會合並到目標資料庫。

下表不能包含可設定的欄位,而且不能列在此資料表中:

ModuleSubstitution 資料表

ModuleConfiguration 資料表

ModuleExclusion 資料表

ModuleSignature 資料表

ModuleSubstitution 資料表具有下列資料行。

資料行 類型 答案 Nullable
資料表 識別碼 Y N
資料列 Text Y N
資料行 識別碼 Y N
Text N Y

 

資料行

此資料行會指定模組資料庫中要修改的資料表名稱。

此欄位會指定資料表中 [資料表] 資料行中目標資料列的主鍵。 多個主鍵會以分號分隔。 在對目標資料表進行任何變更之前,會選取目標資料列進行修改。 如果 ModuleSubstitution 資料表中的一筆記錄變更目標資料列的主鍵欄位,則 ModuleSubstitution 資料表中的其他記錄會根據原始主鍵資料套用,而不是主鍵替代的結果。 資料列替代的順序未定義。

此資料行中的值一律為 CMSM 特殊格式。 常值分號 (';') 或等號 ('=') ,可以藉由將字元前面加上反斜線。 '\'. 索引鍵的 Null 值是以 null、前置分號、兩個連續分號或尾端分號表示,取決於 Null 值是否為唯一、第一個、中間或最後一個索引鍵資料行值。

此欄位會指定資料列中名為 之資料行中的目標資料行。 如果 ModuleSubstitution 資料表中的多個資料列變更相同目標資料列的不同資料行,則會在修改的資料列插入資料庫之前執行所有資料行替代。 資料行替代的順序未定義。

價值

此資料行包含一個字串,提供格式化範本,讓資料取代成資料表、資料列和資料行所指定的目標欄位。 遇到表單 [=ItemA] 的替代字串時,字串會以可設定 「ItemA」 的值取代字串,包括括弧字元。可設定的專案 「ItemA」 是在 ModuleConfiguration 資料表 的 Name 資料行中指定,而且其值是由合併工具提供。 如果合併工具拒絕為取代字串中的任何專案提供值,則會取代 ModuleConfiguration Table 之 DefaultValue 資料行中指定的預設值。 如果字串參考不在 ModuleConfiguration 資料表中的專案,合併就會失敗。

  • 此資料行使用 CMSM 特殊格式。 常值分號 (';') 或等於符號 ('=') 可以新增至資料表,方法是將字元前面加上反斜線。 '\'.
  • [值] 欄位可能包含多個替代字串。 例如,字串中的專案 「Food1」 和 「Food2」 的組態很好,但 [=Food2] 比較好,因為 [=Food2] 更豐富。
  • 取代字串不得巢狀。 範本 「[=AB[=CDE]]」 無效。
  • 如果 [值] 欄位評估為 null,且目標欄位無法為 Null,則合併會失敗,而且會建立 msmErrorBadNullSubstitution 類型的錯誤物件,並新增至錯誤清單。 如需詳細資訊,請參閱 get_Type 函式中所述的錯誤類型。
  • 如果 [值] 欄位評估為 Null GUID: {00000000-0000-0000-0000-000000000000} ,則會在資料列合併至模組之前,以功能名稱取代 Null GUID。 如需詳細資訊,請參閱 在合併模組中參考功能
  • [值] 欄位中的範本會在插入目標欄位之前進行評估。 在取代任何功能之前,會先對資料列進行替代。
  • 如果 Value 資料行評估為只有具有選擇性 + 或 -) 之整數位符的字串 (,則字串會先轉換成整數,再取代為 整數格式類型的目標欄位。 如果範本評估為不只包含整數位符的字串, (且選擇性的 + 或 -) 結果無法取代為整數目標欄位。 嘗試將非整數插入整數位段會導致合併失敗,並將 msmErrorBadSubstitutionType 錯誤物件新增至錯誤清單。
  • 如果 [資料表] 和 [資料行] 欄位中指定的目標資料行是 [文字格式類型],而 [值] 欄位的評估會產生 整數格式類型,則會將數位的小數標記法插入目標文字欄位中。
  • 如果目標欄位是 整數格式類型,而 [值] 欄位是由 Bitfield Format中專案的非分隔清單所組成,則目標欄位中的值會使用位 AND 運算子與位 AND 運算子結合專案中的所有位 OR 值,然後在以對應的遮罩值遮罩時,使用位 OR 運算子與每個整數或位欄位專案結合。 基本上,這會明確地將屬性中的位設定為所提供的值,但會將儲存格中的所有其他位單獨保留。
  • 如果 [值] 欄位評估為 索引鍵格式類型,而且是使用多個主鍵之資料表中的索引鍵,則專案名稱後面可能會接著分號和整數值,指出以 1 為基礎的索引,一起建立主鍵的值集。 如果未指定整數,則會使用值 1。 例如, Control 資料表 有兩個主要索引鍵資料行,Dialog_和 Control。 控制項資料表中索引鍵的專案 「Item1」 值將會是 「DialogName;ControlName「,其中 DialogName 是Dialog_資料表中的值,而 ControlName 是 Control 資料行中的值。 若要只取代 ControlName,應該使用替代字串 [=Item1;2]。

備註

ModuleSubstition 資料表是由 可設定的合併模組使用。 需要Mergemod.dll 2.0 版或更新版本,才能建立可設定的合併模組。

為了確保與 2.0 版之前的 Mergemod.dll版本相容,應該在每個模組的ModuleIgnoreTable 資料表中包含ModuleConfiguration 資料表和 ModuleSubstitution 資料表。