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 pueden 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:
Al crear su propia validación específica de la aplicación que pueda comprobar los datos durante los cambios a los valores en una columna de datos individual. Para obtener más información, vea Cómo: Validar datos mientras se modifica una columna.
Al crear su propia validación específica de la aplicación que pueda comprobar los datos durante los cambios a los valores mientras se cambia una fila de datos completa. Para obtener más información, vea Cómo: Validar datos mientras se modifica la fila.
Crear claves, restricciones UNIQUE, etc., como parte de la definición de esquema actual del conjunto de datos. Para obtener más información sobre cómo incorporar la validación en la definición de esquema, vea Constraining a DataColumn to Contain Unique Values.
Al establecer las propiedades del objeto DataColumn, como MaxLength, AllowDBNully Unique.
Cuando ocurre un cambio en un registro, el objeto DataTable produce una serie de eventos:
Los eventos ColumnChanging y ColumnChanged se producen durante y después de cada cambio en una columna individual. El evento ColumnChanging es útil cuando se desea validar cambios en columnas específicas. La información sobre el cambio propuesto se pasa como argumento con el evento. Para obtener más información, vea Cómo: Validar datos mientras se modifica una columna.
Los eventos RowChanging y RowChanged se producen durante y después de realizar algún cambio en una fila. El evento RowChanging es más general, ya que simplemente indica que se está produciendo un cambio en alguna parte de la fila, pero no se sabe qué columna ha cambiado. Para obtener más información, vea Cómo: Validar datos mientras se modifica la fila.
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 fuertemente tipados. 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 |
---|---|
Se está modificando el valor de una columna. El evento pasa la fila y la columna junto con el nuevo valor propuesto. |
|
Se ha modificado el valor de una columna. El evento pasa la fila y la columna junto con el valor propuesto. |
|
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.). |
|
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.). |
|
Se está eliminando una fila. El evento pasa la fila y un valor que indica qué tipo de acción se está realizando (eliminar). |
|
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