Partilhar via


Validação Interna

Ao criar um pacote de instalação, você pode usar a funçãoMsiViewModify ou o método View.Modify para garantir que os dados inseridos estejam sintaticamente corretos. Para obter mais informações, consulte método Modify. No nível mais baixo, a coluna de uma tabela de banco de dados pode armazenar inteiros (curtos ou longos), cadeias de caracteres ou dados binários. No entanto, um pacote de instalação requer inteiros ou cadeias de caracteres específicos em determinadas tabelas. Estas especificações são mantidas no quadro _Validation. Por exemplo, a coluna FileName da tabela File é uma coluna de cadeia de caracteres, mas armazena especificamente um nome de arquivo. Portanto, não só sua entrada deve ser uma cadeia de caracteres, mas também deve seguir os requisitos para nomear arquivos.

Os vários valores de enum de validação usados com a funçãoMsiViewModify permitem a validação imediata em diferentes níveis. O MSIMODIFY_VALIDATE_FIELD enum pode ser usado para validar campos individuais de um registro. Não valida chaves estrangeiras. O MSIMODIFY_VALIDATE enum valida uma linha inteira e inclui a validação de chave estrangeira. Se você estiver inserindo uma nova linha em uma tabela, use o enum MSIMODIFY_VALIDATE_NEW para verificar se está adicionando dados válidos, bem como usando chaves primárias exclusivas. Uma inserção falhará se as chaves primárias não forem exclusivas. Se uma chamada para MsiViewModify com um dos enums de validação retornar um erro, você poderá fazer chamadas repetidas para MsiViewGetError para diagnosticar o problema. MsiViewGetError indica a coluna onde o erro ocorreu, bem como o valor de enum para ajudar a corrigir o problema. Para obter mais informações, consulte método GetError.

Você também pode usar a validação interna para garantir que outros autores insiram dados corretamente em sua tabela personalizada. Adicione cada uma das colunas da tabela personalizada à tabela _Validation usando o nome da tabela personalizada e o nome da coluna como chave primária. Forneça uma descrição ou finalidade de cada coluna na coluna Descrição da tabela _Validation. Insira os requisitos aplicáveis para cada coluna usando as colunas Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Category e set:

  • Se a coluna for anulável, insira um 'Y'. Caso contrário, introduza um «N».
  • Se a coluna for uma coluna inteira e puder conter um intervalo de inteiros, insira esse intervalo usando as colunas MinValue e MaxValue.
  • As colunas de chave estrangeira são identificadas usando as colunas KeyTable e KeyColumn.
  • Para colunas de cadeia de caracteres, especifique uma Categoria, como Nome do arquivo, GUID ou Identificador. Para obter mais informações, consulte tipos de dados de coluna.
  • Se os dados só puderem pertencer a um número específico de valores (cadeia de caracteres ou inteiro), use a coluna Definir para listar os valores aceitáveis.

A seguir está uma lista das colunas (além de Tabela, Coluna e Descrição) na tabela _Validation que podem ser preenchidas se sua coluna for do tipo especificado. (Observe que você não precisa preencher todas as colunas.)

Tipo Colunas
Inteiro Nulo, MinValue, MaxValue, KeyTable, KeyColumn, set
String Nulo, KeyTable, KeyColumn, Categoria, set, MinValue, MaxValue
Binário Nulo, Categoria (A categoria deve ser "Binária")

 

Os ambientes de criação podem usar MSIMODIFY_VALIDATE_DELETE. Este enum pressupõe que você deseja excluir a linha. Nenhuma validação de campo ou chave estrangeira é executada. Este enum realmente executa uma validação de chave estrangeira reversa. Ele verifica a tabela _Validation para referências nas colunas KeyTable e KeyColumn para a tabela à qual a linha "excluída" pertence. Se houver colunas que listam a tabela que contém a linha "excluída" como uma chave estrangeira potencial, ela percorre essa coluna para ver se algum dos valores faz referência aos valores na linha "excluída". Um retorno de erro significa que você quebra a integridade relacional do banco de dados excluindo a linha.