Identificar restricción que causa una excepción

Iniciado por |Miguel|, 27 Abril 2012, 12:27 PM

0 Miembros y 1 Visitante están viendo este tema.

|Miguel|

Hola a todos.

Estoy teniendo un problemilla. Os comento. Tengo un dataGrid asociado a un dataTable, de forma que el dataTable 'hereda' (por decirlo de alguna forma) las restricciones que tiene la tabla SQL de la que cargo los datos.

Todo funciona bien, cuando violo la restricción de clave primaria o cualquier otra me salta el error, pero lo que no sé es cómo identificar la restricción que ha hecho saltar la excepción, para sacar un mensaje distinto en cada caso.

Este es mi evento, y lo que quiero es un mensaje diferente para cada restricción violada, espero haberme explicado.

Código (vbnet) [Seleccionar]

        MessageBox.Show("Errores en los datos. Revise lo siguiente por favor: " & vbCrLf & _
                         " -El valor de 'stor_id' no se puede repetir." & vbCrLf & _
                         " -Longitud de 'stor_id' de entre 1 y 4 caracteres." & vbCrLf & _
                         " -Longitud de 'state' de entre  1 y 2 caracteres." & vbCrLf & _
                         " -Longitud de 'city' de entre 1 y 19 caracteres.")
    End Sub


Saludos.

seba123neo

fijate, el mismo datagridview tiene un evento que maneja justamente cuando se lanza un error por alguna causa, no me aucerdo el nombre del evento, pero lo tiene seguro.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

|Miguel|

Cita de: seba123neo en 27 Abril 2012, 15:01 PM
fijate, el mismo datagridview tiene un evento que maneja justamente cuando se lanza un error por alguna causa, no me aucerdo el nombre del evento, pero lo tiene seguro.
Sí, DataError
Ese es el que estoy usando para mostrar ese mensaje que os he puesto (quería haberlo copiado con el evento, se me ha ido el ratón...), pero no sé usarlo. Trastearé a ve si encuentro algo.
gracias
Saludos