ModuleSubstitution 表

ModuleSubstitution 表指定模块数据库的可配置字段,并提供一个模板用于配置每个字段。 用户或合并工具可以查询此表,以确定要执行哪些配置操作。 此表不会合并到目标数据库中。

下表不能包含可配置字段,并且不能在此表中列出:

ModuleSubstitution 表

ModuleConfiguration 表

ModuleExclusion 表

ModuleSignature 表

ModuleSubstitution 表包含以下列。

类型 密钥 Nullable
Identifier Y N
文本 Y N
Identifier Y N
Text N Y

 

Table

此列指定模块数据库中正在修改的表的名称。

Row

此字段指定 Table 列中命名的表中目标行的主键。 用分号分隔多个主键。 在对目标表进行任何更改之前选择要修改的目标行。 如果 ModuleSubstitution 表中的一条记录更改了目标行的主键字段,则会根据原始主键数据而不是最终的主键替换来应用 ModuleSubstitution 表中的其他记录。 行替换顺序未定义。

此列中的值始终采用 CMSM 特殊格式。 可以通过为字符加上反斜杠前缀来添加文本分号(“;”)或等号(“=”)。 '\'. 键的 null 值由 null、前导分号、两个连续分号或尾随分号表示,具体取决于 null 值是孤立的、第一个、中间的还是最后一个键列值。

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”的配置。
  • 不能嵌套替换字符串。 模板“[=AB[=CDE]]”是无效的。
  • 如果 Value 字段的计算结果为 null,并且目标字段不可为 null,则合并将会失败,同时会创建类型为 msmErrorBadNullSubstitution 的错误对象并将其添加到错误列表中。 有关详细信息,请参阅 get_Type 函数中所述的错误类型。
  • 如果 Value 字段的计算结果为 null GUID:{00000000-0000-0000-0000-000000000000},则在将行合并到模块之前,null GUID 将替换为功能名称。 有关详细信息,请参阅在合并模块中引用功能
  • Value 字段中的模板在被插入到目标字段之前计算。 在替换任何功能之前完成行代入。
  • 如果 Value 列的计算结果为仅包含整数字符(带有可选符号 + 或 -)的字符串,则该字符串会先转换为整数,然后再代入整数格式类型的目标字段。 如果模板的计算结果为不仅包含整数字符(带有可选符号 + 或 -)的字符串,则结果不能代入整数目标字段。 尝试将非整数插入整数字段会导致合并失败,并将 msmErrorBadSubstitutionType 错误对象添加到错误列表中。
  • 如果 Table 和 Column 字段中指定的目标列是文本格式类型,并且 Value 字段的计算结果是整数格式类型,则会将数字的十进制表示形式插入到目标文本字段。
  • 如果目标字段是整数格式类型,并且 Value 字段由位字段格式的未分隔项列表组成,则会使用按位 AND 运算符以及项中所有掩码值的按位 OR 逆运算符组合目标字段中的值,然后使用按位 OR 运算符将其与每个整数或位字段项(如果由相应的掩码值掩码)组合。 本质上,这是显式将属性中的位设置为提供的值,但单独保留单元格中的所有其他位。
  • 如果 Value 字段的计算结果为键格式类型,并且是使用多个主键的表中的键,则可以在项名称后面添加一个分号,以及一个表示从 1 开始的索引的整数值,这就是共同构成了主键的值集。 如果未指定整数,则使用值 1。 例如,Control 表包含两个主键列:Dialog_ 和 Control。 作为 Control 表中键的项“Item1”的值将采用“DialogName;ControlName”格式,其中 DialogName 是 Dialog_ 表中的值,而 ControlName 是 Control 列中的值。 若要仅替换 ControlName,应使用替换字符串 [=Item1;2]。

备注

ModuleSubstition 表由可配置的合并模块使用。 创建可配置的合并模块需要 Mergemod.dll 2.0 或更高版本。

为确保与版本 2.0 之前的 Mergemod.dll 版本兼容,ModuleConfiguration 表和 ModuleSubstitution 表应包含在每个模块的 ModuleIgnoreTable 表中。