Tabela ModuleSubstitution

A tabela ModuleSubstitution especifica os campos configuráveis de um banco de dados de módulo e fornece um modelo para a configuração de cada campo. O usuário ou a ferramenta de mesclagem podem consultar essa tabela para determinar quais operações de configuração devem ocorrer. Essa tabela não é mesclada no banco de dados de destino.

As tabelas a seguir não podem conter campos configuráveis e não devem ser listadas nesta tabela:

Tabela ModuleSubstitution

Tabela ModuleConfiguration

Tabela ModuleExclusion

Tabela ModuleSignature

A tabela ModuleSubstitution tem as seguintes colunas.

Coluna Tipo Chave Nullable
Tabela Identificador S N
Linha Texto S N
Coluna Identificador S N
Valor Texto N S

 

Colunas

Tabela

Esta coluna especifica o nome da tabela que está sendo modificada no banco de dados do módulo.

Linha

Este campo especifica as chaves primárias da linha de destino na tabela nomeada na coluna Tabela. Várias chaves primárias são separadas por ponto e vírgula. As linhas de destino são selecionadas para modificação antes que as alterações sejam feitas na tabela de destino. Se um registro na tabela ModuleSubstitution alterar o campo de chave primária de uma linha de destino, outros registros na tabela ModuleSubstitution serão aplicados com base nos dados da chave primária original, não no resultado de substituições de chave primária. A ordem de substituição de linha é indefinida.

Os valores nesta coluna estão sempre no formato especial CMSM. Um ponto e vírgula (';') literal ou sinal de igual ('=') pode ser adicionado prefixando o caractere com uma barra invertida. '\'. Um valor nulo para uma chave é assinado por um nulo, um ponto e vírgula à esquerda, dois ponto-e-vírgula consecutivo ou um ponto-e-vírgula à direita, dependendo se o valor nulo é um valor de coluna de chave única, primeira, intermediária ou final.

Coluna

Este campo especifica a coluna de destino na linha nomeada na coluna Linha. Se várias linhas na tabela ModuleSubstitution alterarem colunas diferentes da mesma linha de destino, todas as substituições de coluna serão executadas antes que a linha modificada seja inserida no banco de dados. A ordem de substituição de coluna é indefinida.

Valor

Esta coluna contém uma cadeia de caracteres que fornece um modelo de formatação para os dados que estão sendo substituídos no campo de destino especificado por Tabela, Linha e Coluna. Quando uma cadeia de caracteres de substituição do formulário [=ItemA] é encontrada, a cadeia de caracteres, incluindo os caracteres de colchete, é substituída pelo valor do "ItemA" configurável. O item configurável "ItemA" é especificado na coluna Nome da tabela ModuleConfiguration e seu valor é fornecido pela ferramenta de mesclagem. Se a ferramenta de mesclagem recusar-se a fornecer um valor para qualquer item em uma cadeia de caracteres de substituição, o valor padrão especificado na coluna DefaultValue da Tabela ModuleConfiguration será substituído. Se uma cadeia de caracteres fizer referência a um item que não está na tabela ModuleConfiguration, a mesclagem falhará.

  • Esta coluna usa o formato especial CMSM. Um ponto e vírgula (';') literal ou sinal de igual ('=') pode ser adicionado à tabela prefixando o caractere com uma barra invertida. '\'.
  • O campo Valor pode conter várias cadeias de caracteres de substituição. Por exemplo, a configuração dos itens "Food1" e "Food2" na cadeia de caracteres: "[=Food1] é bom, mas [=Food2] é melhor porque [=Food2] é mais nutritivo."
  • As cadeias de caracteres de substituição não devem ser aninhadas. O modelo "[=AB[=CDE]]" é inválido.
  • Se o campo Valor for avaliado como nulo e o campo de destino não for anulável, a mesclagem falhará e um objeto de erro do tipo msmErrorBadNullSubstitution será criado e adicionado à lista de erros. Para obter detalhes, consulte os tipos de erro descritos na Função get_Type.
  • Se o campo Valor for avaliado para o GUID nulo: {00000000-0000-0000-0000-000000000000}, o GUID nulo será substituído pelo nome do recurso antes que a linha seja mesclada no módulo. Para obter detalhes, consulte Referenciando recursos em módulos de mesclagem.
  • O modelo no campo Valor é avaliado antes de ser inserido no campo de destino. A substituição em uma linha é feita antes de substituir os recursos.
  • Se a coluna Valor for avaliada como uma cadeia de caracteres somente inteiros (com um + opcional ou -), a cadeia de caracteres será convertida em um inteiro antes de ser substituída em um campo de destino do Tipo de Formato inteiro. Se o modelo for avaliado como uma cadeia de caracteres que não consiste apenas em caracteres inteiros (e um opcional + ou -), o resultado não poderá ser substituído em um campo de destino inteiro. A tentativa de inserir um não inteiro em um campo inteiro faz com que a mesclagem falhe e adiciona um objeto de erro msmErrorBadSubstitutionType à lista de erros.
  • Se a coluna de destino especificada nos campos Tabela e Coluna for um Tipo de Formato de Texto e a avaliação do campo Valor resultar em um Tipo de Formato Inteiro, uma representação decimal do número será inserida no campo de texto de destino.
  • Se o campo de destino for um Tipo de Formato Inteiro e o campo Valor consistir em uma lista não delimitada de itens no Formato bitfield, o valor no campo de destino será combinado usando o operador AND bit a bit com o inverso do OR bit a bit de todos os valores de máscara dos itens e, em seguida, combinado usando o operador OR bit a bit com cada um dos itens inteiros ou bitfield quando mascarados por seus valores de máscara correspondentes. Essencialmente, isso define explicitamente os bits das propriedades para os valores fornecidos, mas deixa todos os outros bits na célula sozinhos.
  • Se o campo Valor for avaliado como um Tipo de Formato de Chave e for uma chave em uma tabela que usa várias chaves primárias, o nome do item poderá ser seguido por um ponto e vírgula e um valor inteiro que indica o índice baseado em 1 no conjunto de valores que juntos fazem uma chave primária. Se nenhum inteiro for especificado, o valor 1 será usado. Por exemplo, a tabela Control tem duas colunas de chave primária, Dialog_ e Control. O valor de um item "Item1" que é uma chave na tabela Controle será do formulário "DialogName; ControlName", em que DialogName é o valor na tabela Dialog_ e ControlName é o valor na coluna Control. Para substituir apenas ControlName, a cadeia de caracteres de substituição [=Item1;2] deve ser usada.

Comentários

A tabela ModuleSubstition é usada por módulos de mesclagem configuráveis. Mergemod.dll versão 2.0 ou posterior é necessário para criar um módulo de mesclagem configurável.

Para garantir a compatibilidade com versões de Mergemod.dll anteriores à versão 2.0, a tabela ModuleConfiguration e as tabelas ModuleSubstitution devem ser incluídas na tabela ModuleIgnoreTable de cada módulo.