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 serão utilizadas. Esta 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
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
-
Table
-
Esta coluna especifica o nome da tabela que está sendo modificada no banco de dados do módulo.
-
Row
-
Esse campo especifica as chaves primárias da linha de destino na tabela chamada na coluna Table. 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 sejam feitas alterações na tabela de destino. Se um registro na tabela ModuleSubstitution alterar o campo da chave primária de uma linha de destino, outros registros na tabela ModuleSubstitution serão aplicados com base nos dados originais da chave primária, não no resultado das substituições de chave primária. A ordem de substituição de linhas é indefinida.
Os valores nesta coluna estão sempre no formato especial do 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 é representado por um nulo, um ponto e vírgula à esquerda, dois ponto-e-vírgulas consecutivos ou um ponto e vírgula à direita, dependendo de o valor nulo ser um valor de coluna de chave único, inicial, intermediário ou final.
-
Column
-
Esse campo especifica a coluna de destino na linha chamada na coluna Row. 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 colunas é indefinida.
-
Value
-
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 entre colchete, é substituída pelo valor do configurável "ItemA". O item configurável "ItemA" é especificado na coluna Name da tabela ModuleConfiguration e seu valor é fornecido pela ferramenta de mesclagem. Se a ferramenta de mesclagem se recusar a fornecer um valor para algum 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] é boa, 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 em get_Type Function.
- Se o campo Valor for avaliado como 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 Como referenciar 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 da substituição de recursos.
- Se a coluna Valor for avaliada como uma cadeia de caracteres de apenas inteiros (com um + ou - opcional), 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 + ou - opcional), o resultado não poderá ser substituído em um campo de destino inteiro. Tentar 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 do campo de bits quando mascarados por seus valores de máscara correspondentes. Essencialmente, isso define de forma explicita os bits das propriedades para os valores fornecidos, mas deixa todos os outros bits sozinhos na célula.
- 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 compõem 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 Control terá o formato "DialogName; ControlName", em que DialogName é o valor na tabela Dialog_ e ControlName é o valor na coluna Control. A cadeia de caracteres de substituição [=Item1;2] deve ser usada para substituir apenas ControlName.
Comentários
A tabela ModuleSubstition é usada por Módulos de mesclagem configuráveis. A Mergemod.dll versão 2.0 ou posterior é necessária para criar um módulo de mesclagem configurável.
Para garantir a compatibilidade com versões da Mergemod.dll anteriores à versão 2.0, a tabela ModuleConfiguration e as tabelas ModuleSubstitution devem ser incluídas na tabela ModuleIgnoreTable de todos os módulos.