Validar los datos en conjuntos de datos

Validar datos es el proceso de confirmar que los valores que se especifican en los objetos de datos son compatibles con las restricciones dentro de un esquema del conjunto de datos, al igual que las reglas establecidas para su aplicación. Validar datos antes de enviar actualizaciones a la base de datos subyacente es una buena práctica que reduce los errores y la cantidad potencial de acciones de ida y vuelta entre una aplicación y la base de datos. Para confirmar que son válidos los datos que se escriben en un conjunto de datos, se puede construir comprobaciones de validación en el propio conjunto de datos. El conjunto de datos puede comprobar los datos independientemente de cómo se esté realizando la actualización, ya sea directamente mediante los controles de un formulario, desde dentro de un componente o de alguna otra manera. Dado que el conjunto de datos forma parte de la aplicación, es lógico construir una validación específica de la aplicación (a diferencia de integrar las mismas comprobaciones en el servidor de bases de datos).

La ubicación sugerida para agregar validación en la aplicación es el archivo de clase parcial del conjunto de datos. En Visual Basic o Visual C#, abra el Diseñador de DataSet y haga doble clic en la columna o tabla para la que desea crear la validación. Esta acción crea en forma automática un controlador de eventos ColumnChanging o RowChanging. Para obtener más información, vea Cómo: Validar datos mientras se modifica una columna o Cómo: Validar datos mientras se modifica la fila. Para obtener un ejemplo completo, vea Tutorial: Agregar validación a un conjunto de datos.

Validar datos

Para integrar la validación en un conjunto de datos, se puede:

Cuando ocurre un cambio en un registro, el objeto DataTable produce una serie de eventos:

De forma predeterminada, cada cambio a una columna produce cuatro eventos: primero los eventos ColumnChanging y ColumnChanged para la columna concreta en la cual se realizan los cambios y a continuación los eventos RowChanging y RowChanged. Si se realizan varios cambios en la fila, los eventos se provocan para cada uno de los cambios.

Nota

El método BeginEdit de la fila de datos desactiva los eventos RowChanging y RowChanged después de cada cambio en las columnas individuales. En ese caso, el evento no se produce hasta que se ha llamado al método EndEdit, cuando los eventos RowChanging y RowChanged se producen una sola vez. Para obtener más información, vea Cómo: Desactivar restricciones al llenar un conjunto de datos.

El evento que elija depende del nivel de detalle que desee aplicar a la validación. Si es importante detectar un error inmediatamente después de modificar una columna, construya la validación con el evento ColumnChanging. De lo contrario, utilice el evento RowChanging, el cual puede permitir detectar varios errores al mismo tiempo. Además, si los datos están estructurados de tal forma que el valor de una columna se valida en base al contenido de otra columna, es necesario realizar la validación durante el evento RowChanging.

Cuando se actualizan los registros, el objeto DataTable produce eventos a los que se puede responder a medida que se realizan los cambios y después de que éstos se han realizado.

Si su aplicación utiliza un conjunto de datos con tipo, puede crear controladores de eventos con establecimiento inflexible de tipos. Esto agregará cuatro eventos adicionales con tipo para los cuales se pueden crear controladores; dataTableNameRowChanging, dataTableNameRowChanged, dataTableNameRowDeleting y dataTableNameRowDeleted. Estos controladores de eventos con tipo pasan un argumento que incluye los nombres de columna de la tabla, lo que simplifica la lectura y escritura del código.

Eventos de actualización de datos

Evento

Descripción

ColumnChanging

Se está modificando el valor de una columna. El evento pasa la fila y la columna junto con el nuevo valor propuesto.

ColumnChanged

Se ha modificado el valor de una columna. El evento pasa la fila y la columna junto con el valor propuesto.

RowChanging

Los cambios realizados a un objeto DataRow están a punto de confirmarse de regreso en el conjunto de datos. Si no se llama al método BeginEdit, se produce el evento RowChanging para cada cambio realizado en una columna, inmediatamente después de producirse el evento ColumnChanging. Si se llama a BeginEdit antes de realizar cambios, se produce el evento RowChanging sólo cuando se llama al método EndEdit.

El evento pasa la fila y un valor que indica qué tipo de acción se está realizando (cambiar, insertar, etc.).

RowChanged

Se ha modificado una fila. El evento pasa la fila y un valor que indica qué tipo de acción se está realizando (cambiar, insertar, etc.).

RowDeleting

Se está eliminando una fila. El evento pasa la fila y un valor que indica qué tipo de acción se está realizando (eliminar).

RowDeleted

Se ha eliminado una fila. El evento pasa la fila y un valor que indica qué tipo de acción se está realizando (eliminar).

Los eventos ColumnChanging, RowChanging y RowDeleting se producen durante el proceso de actualización. Puede utilizar estos eventos para validar datos o realizar otros tipos de procesos. Debido a que las actualizaciones se están realizando mientras se ejecutan estos eventos, puede cancelarlas produciendo una excepción, lo que impide que se complete el cambio.

Los eventos ColumnChanged, RowChanged y RowDeleted son eventos de notificación que se producen cuando la actualización se ha realizado correctamente. Estos eventos son útiles cuando se desea ejecutar acciones posteriores dependiendo de si la actualización se realizó correctamente.

Vea también

Tareas

Cómo: Conectarse a los datos de una base de datos

Cómo: Validar datos en el control DataGridView de formularios Windows Forms

Cómo: Mostrar iconos de error para la validación de formularios con el componente ErrorProvider de formularios Windows Forms

Conceptos

Diseñador de DataSet