Compartir a través de


Validación interna

Al crear un paquete de instalación, puede usar la función MsiViewModify o el método View.Modify para asegurarse de que los datos que escriba sean sintácticasmente correctos. Para obtener más información, vea Modificar método. En el nivel más bajo, la columna de una tabla de base de datos puede almacenar enteros (short o long), cadenas o datos binarios. Sin embargo, un paquete de instalación requiere enteros o cadenas específicos en determinadas tablas. Estas especificaciones se mantienen en la tabla _Validation. Por ejemplo, la columna FileName de la tabla file es una columna de cadena, pero almacena específicamente un nombre de archivo. Por lo tanto, no solo debe ser una cadena, sino que también debe seguir los requisitos para asignar nombres a los archivos.

Los distintos valores de enumeración de validación usados con la función de MsiViewModify permiten la validación inmediata en distintos niveles. La enumeración MSIMODIFY_VALIDATE_FIELD se puede usar para validar campos individuales de un registro. No valida las claves externas. La enumeración MSIMODIFY_VALIDATE valida una fila completa e incluye la validación de clave externa. Si va a insertar una nueva fila en una tabla, use la enumeración MSIMODIFY_VALIDATE_NEW para comprobar que va a agregar datos válidos y usar claves principales únicas. Se produce un error en la inserción si las claves principales no son únicas. Si una llamada a MsiViewModify con una de las enumeraciones de validación devuelve un error, puede realizar llamadas repetidas a MsiViewGetError para diagnosticar el problema. MsiViewGetError indica la columna donde se produjo el error, así como el valor de enumeración para ayudar a solucionar el problema. Para obtener más información, vea método GetError.

También puede usar la validación interna para asegurarse de que otros autores escriban datos correctamente en la tabla personalizada. Agregue cada una de las columnas de la tabla personalizada a la tabla _Validation mediante el nombre de tabla personalizado y el nombre de columna como clave principal. Proporcione una descripción o un propósito de cada columna en la columna Descripción de la tabla _Validation. Escriba los requisitos aplicables para cada columna mediante las columnas Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Category y Set:

  • Si la columna es Nullable, escriba "Y". Si no es así, escriba "N".
  • Si la columna es una columna entera y puede contener un intervalo de enteros, escriba ese intervalo mediante las columnas MinValue y MaxValue.
  • Las columnas de clave externa se identifican mediante las columnas KeyTable y KeyColumn.
  • Para las columnas de cadena, especifique una categoría como Nombre de archivo, GUID o Identificador. Para obtener más información, consulte tipos de datos de columna.
  • Si los datos solo pueden pertenecer a un número específico de valores (cadena o entero), use la columna Establecer para enumerar los valores aceptables.

A continuación se muestra una lista de las columnas (además de Tabla, Columna y Descripción) de la tabla _Validation que se puede rellenar si la columna es del tipo especificado. (Tenga en cuenta que no tiene que rellenar todas las columnas).

Tipo Columnas
Entero Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Set
Cuerda Nullable, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue
Binario Acepta valores NULL, Category (Category debe ser "Binary")

 

Los entornos de creación pueden usar MSIMODIFY_VALIDATE_DELETE. En esta enumeración se supone que desea eliminar la fila. No se realiza ninguna validación de campo o clave externa. Esta enumeración realiza realmente una validación inversa de clave externa. Comprueba el _Validation tabla para ver las referencias de las columnas KeyTable y KeyColumn de la tabla a la que pertenece la fila "eliminada". Si hay columnas que enumeran la tabla que contiene la fila "eliminada" como una posible clave externa, recorre esa columna para ver si alguno de los valores hace referencia a valores en la fila "eliminada". Una devolución de error significa que se interrumpe la integridad relacional de la base de datos eliminando la fila.