ModuleSubstitution 表

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 表 的名称列中指定,其值由合并工具提供。 如果合并工具拒绝为替换字符串中的任何项提供值,则替换 ModuleConfiguration 表的 DefaultValue 列中指定的默认值。 如果字符串引用 ModuleConfiguration 表中的项,则合并失败。

  • 此列使用 CMSM 特殊格式。 文本分号 (';') 或等号 ('=') 可以通过用反斜杠作为字符前缀添加到表中。 '\'.
  • “值”字段可能包含多个替换字符串。 例如,字符串中项目“Food1”和“Food2”的配置良好,但 [=Food2] 更好,因为 [=Food2] 更营养。
  • 不能嵌套替换字符串。 模板“[=AB[=CDE]]”无效。
  • 如果 Value 字段的计算结果为 null,并且目标字段不可为 null,则合并失败,并且会创建 msmErrorBadNullSubstitution 类型的错误对象并将其添加到错误列表中。 有关详细信息,请参阅 get_Type 函数中所述的错误类型。
  • 如果 Value 字段的计算结果为 null GUID: {00000000-0000-0000-0000-000000000000},则行合并到模块之前,将用功能名称替换 null GUID。 有关详细信息,请参阅 合并模块中的引用功能
  • “值”字段中的模板是在插入目标字段之前计算的。 在替换任何功能之前,将替换行。
  • 如果 Value 列的计算结果为仅具有可选 + 或 -) 的整数字符 (字符串,则字符串将转换为整数,然后再被替换为 整数格式类型的目标字段。 如果模板的计算结果不是仅包含整数字符的字符串, (和可选的 + 或 -) 不能将结果替换为整数目标字段。 尝试将非整数插入整数字段会导致合并失败,并将 msmErrorBadSubstitutionType 错误对象添加到错误列表中。
  • 如果在“表”和“列”字段中指定的目标列是 文本格式类型,并且“值”字段的计算结果为 整数格式类型,则会将数字的小数表示形式插入到目标文本字段中。
  • 如果目标字段是 整数格式类型,并且 Value 字段由 Bitfield Format 中的项的非分隔列表组成,则目标字段中的值使用按位 AND 运算符与项中所有掩码值的反位 OR 进行组合,然后在用相应的掩码值屏蔽时,将按位 OR 运算符与每个整数或位域项组合在一起。 从本质上讲,这显式将属性中的位设置为提供的值,但只保留单元格中的所有其他位。
  • 如果 Value 字段的计算结果为 键格式类型,并且是使用多个主键的表中的键,则项名称可能后跟一个分号和一个整数值,该值指示从 1 开始的索引到一组共同构成主键的值中。 如果未指定整数,则使用值 1。 例如, 控件表 有两个主键列,Dialog_和 Control。 控件表中键的项“Item1”的值将采用“DialogName”格式:ControlName“,其中 DialogName 是Dialog_表中的值,ControlName 是控件列中的值。 若要仅替换 ControlName,应使用替换字符串 [=Item1;2]。

注解

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

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