ModuleSubstitution 表

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

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

ModuleSubstitution 表

ModuleConfiguration 表

ModuleExclusion 表

ModuleSignature 表

ModuleSubstitution 表具有以下列。

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

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

此字段指定"表"列中名为 的表中目标行的主键。 多个主键由分号分隔。 在对目标表做出任何更改之前,会选择目标行进行修改。 如果 ModuleSubstitution 表中的一条记录更改了目标行的主键字段,则 ModuleSubstitution 表中的其他记录将基于原始主键数据应用,而不是主键替换的结果。 未定义行替换的顺序。

此列中的值始终采用 CMSM 特殊格式。 文本分号 (";") 反 (来添加 (=') 字符的符号。 '\'. 键的 null 值由 null、前导分号、两个连续分号或尾随分号表示,具体取决于 null 值是唯一、第一个、中间还是最终键列值。

此字段指定 Row 列中名为 的行中的目标列。 如果 ModuleSubstitution 表中的多行更改了同一目标行的不同列,则所有列替换操作在修改后的行插入数据库之前执行。 未定义列替换的顺序。

价值

此列包含一个字符串,该字符串为要替换为表、行和列指定的目标字段中的数据提供格式设置模板。 当遇到 =ItemA 形式的替换字符串时,字符串(包括方括号字符)将替换为可配置的 [ ] "ItemA"的值。 可配置项"ItemA"在 ModuleConfiguration 表的"名称"列中指定,其值由合并工具提供。 如果合并工具拒绝为替换字符串中的任意项提供值,则替换 ModuleConfiguration 表的 DefaultValue 列中指定的默认值。 如果字符串引用的项不在 ModuleConfiguration 表中,则合并失败。

  • 此列使用 CMSM 特殊格式。 文本分号 (";") 为字符添加反 ("=") 字符,以向表中添加一个或多个等号。 '\'.
  • "值"字段可以包含多个替换字符串。 例如,字符串中的项"Food1"和"Food2"的配置:"=Food1 很好,但 =Food2 更好,因为 [ ] [ ] [ =Food2 ] 更丰富。"
  • 替换字符串不得嵌套。 模板 [ "=AB [ ] ] =CDE"无效。
  • 如果"值"字段计算结果为 null,并且目标字段不可为 null,则合并失败,并创建 msmErrorBadNullSubstitution 类型的错误对象,并添加到错误列表中。 有关详细信息,请参阅 get Type Function 中所述 _ 的错误类型
  • 如果"值"字段计算结果为 null GUID:,则 null GUID 将替换为功能的名称,然后行 {00000000-0000-0000-0000-000000000000} 将合并到模块中。 有关详细信息,请参阅 引用合并模块 中的功能
  • 在将 "值" 字段中的模板插入到目标字段之前,将计算该模板。 在替换任何功能之前,将替换成行。
  • 如果 Value 列计算结果为仅包含整数字符的字符串 (可选的 + 或 -) ,则字符串将转换为整数,然后再被替换为整数格式类型 的目标 字段。 如果模板计算结果为不只包含整数字符的字符串 (可选的 + 或 -) 则结果不能替换为整数目标字段。 尝试将非整数插入整数字段会导致合并失败,并将 msmErrorBadSubstitutionType 错误对象添加到错误列表。
  • 如果在"表"和"列"字段中指定的目标列是"文本格式类型",则对"值"字段的评估将产生整数格式类型,则数字的十进制表示形式将插入到目标文本字段中。
  • 如果目标字段是整数格式 类型 ,并且 Value 字段包含以 域格式表示的项的非分隔列表,则目标字段中的值使用按位 AND 运算符与项中所有掩码值的按位 倒数进行组合,然后在被相应掩码值屏蔽时,将按位 OR 运算符与每个整数或位域项结合使用。 实质上,这会将属性中的位显式设置为提供的值,但保留单元格中的所有其他位。
  • 如果"值"字段计算结果为"键格式类型",并且 是使用多个主键的表中的键,则项名称后跟一个分号和一个整数值,该值指示一组值中基于 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 表中。