Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao criar um pacote de instalação, você pode usar a função MsiViewModify ou o método View.Modify para garantir que os dados inseridos estão sintaticamente corretos. Para obter mais informações, consulte Modificar método. 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. Essas especificações são mantidas na tabela _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 enumeração de validação usados com a função MsiViewModify permitem a validação imediata em diferentes níveis. A enumeração MSIMODIFY_VALIDATE_FIELD pode ser usada para validar campos individuais de um registro. Ele não valida chaves estrangeiras. A enumeração MSIMODIFY_VALIDATE valida uma linha inteira e inclui validação de chave estrangeira. Se você estiver inserindo uma nova linha em uma tabela, use o MSIMODIFY_VALIDATE_NEW enumeração 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 uma das enumerações de validação retornar um erro, você poderá fazer chamadas repetidas para msiViewGetError para diagnosticar o problema. msiViewGetError indica a coluna em que o erro ocorreu, bem como o valor de enumeração 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 e o nome da coluna personalizados como a 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, insira um 'N'.
- Se a coluna for uma coluna de inteiro 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 de 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 Set para listar os valores aceitáveis.
Veja a seguir uma lista das colunas (além de Tabela, Coluna e Descrição) na tabela _Validation que pode ser preenchida se a coluna for do tipo especificado. (Observe que você não precisa preencher todas as colunas.)
| Tipo | Colunas |
|---|---|
| Inteiro | Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Set |
| Corda | Nullable, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue |
| Binário | Anulável, Categoria (Categoria deve ser "Binário") |
Ambientes de criação podem usar MSIMODIFY_VALIDATE_DELETE. Essa enumeração pressupõe que você deseja excluir a linha. Nenhuma validação de campo ou chave estrangeira é executada. Essa enumeração realmente executa uma validação inversa de chave estrangeira. Ele verifica a _Validation tabela em busca de 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 a valores na linha "excluída". Um retorno de erro significa que você interrompe a integridade relacional do banco de dados excluindo a linha.