ModuleSubstitution Table

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

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

ModuleSubstitution 表

ModuleConfiguration 表

ModuleExclusion 表

ModuleSignature 表

ModuleSubstitution 表具有以下列。

类型 钥匙
桌子 标识符 Y N
文本 Y N
标识符 Y N
价值 文本 N Y

 

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

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

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

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

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

  • 此列使用 CMSM 特殊格式。 文本分号(';')或等号('=')可以通过对反斜杠的字符进行前缀来添加到表中。 '\'.
  • “值”字段可能包含多个替换字符串。 例如,字符串中项目“Food1”和“Food2”的配置良好,但 [=Food2] 更好,因为 [=Food2] 更营养。
  • 替换字符串不得嵌套。 模板“[=AB[=CDE]]”无效。
  • 如果 Value 字段的计算结果为 null,并且目标字段不可为 null,则合并失败,并创建 msmErrorBadNullSubstitution 类型的错误对象并将其添加到错误列表中。 有关详细信息,请参阅函数get_Type 中所述的错误类型。
  • 如果“值”字段的计算结果为 null GUID:{00000000-0000-0000-0000-000000000000},则将在将行合并到模块之前用功能的名称替换 null GUID。 有关详细信息,请参阅合并模块 中的引用功能。
  • “值”字段中的模板在插入目标字段之前进行评估。 在替换任何功能之前,将替换行。
  • 如果 Value 列的计算结果为仅包含整数字符的字符串(具有可选 + 或 -),则字符串将转换为整数,然后再替换为 整数格式类型的目标字段。 如果模板的计算结果为不只包含整数字符(以及可选的 + 或 -)的字符串,则不能将结果替换为整数目标字段。 尝试将非整数插入整数字段会导致合并失败,并将 msmErrorBadSubstitutionType 错误对象添加到错误列表。
  • 如果“表”和“列”字段中指定的目标列是 文本格式类型,并且值字段的计算结果为 整数格式类型,则数字的小数表示形式将插入到目标文本字段中。
  • 如果目标字段是 整数格式类型,并且值字段由 Bitfield Format中的项的非分隔列表组成,则目标字段中的值使用按位 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 版本兼容,ModuleConfiguration 表 和 ModuleSubstitution 表应包含在每个模块的 ModuleIgnoreTable 表 中。