Aviso de error de validacion

24/03/2008 - 12:42 por Heriberto Díaz | Informe spam
Estoy colocando una regla a una tabla que es una expresion 'Debe>=Haber'.
(check restriction)

Quiero que cuando me avise que se ha violado esa regla ponerle un mensaje
de aviso distinto al que sale ya que los usuarios no lo entienden.
Donde se cambia el texto del aviso de error?


SQL 2005

Preguntas similare

Leer las respuestas

#1 Jesús López
24/03/2008 - 18:23 | Informe spam
Se cambia en la aplicación cliente. Algo que se puede hacer es buscar el
nombre de la restricción en el mensaje de error. Por ejemplo si la tabla es:

CREATE TABLE Cuentas(
IdCuenta int IDENTITY(1,1) PRIMARY KEY,
Debe money,
Haber money,
CONSTRAINT CK_DebeMayorHaber CHECK( Debe >= Haber)
)


Podrías hacer algo así:

Try
' Actualizar o insertar en la tabla
Catch ex As SqlException
If ex.Message.Contains("CK_DebeMayorHaber") Then
MsgBox ("El debe tiene que ser mayor o igual que el haber")
ElseIf ex.Message.Contains("El nombre de otra restricción") Then
MsgBox("Un mensaje de error adecuado")
ElseIf .

Else
MsgBox("Error al realizar la operación, contacte con el servicio
Técnico")
RegistrarErrorParaQueLuegoLoVeaElServicioTécnico( ex )
End If
End Try


Otro enfoque a este problema sería tener una tabla de traducción de errores
con el mensaje de error y la traducción para el usuario, y cuando se produce
un error buscar la traducción y presentársela al usuario. Si el mensaje de
error no se encuentra en la tabla de traducciones podría añadirse para más
adelante asignarle una traducción, así poco a poco se iría mejorando...


Saludos:


Jesús López
www.solidq.com







"Heriberto Díaz" escribió en el mensaje
news:
Estoy colocando una regla a una tabla que es una expresion 'Debe>=Haber'.
(check restriction)

Quiero que cuando me avise que se ha violado esa regla ponerle un mensaje
de aviso distinto al que sale ya que los usuarios no lo entienden.
Donde se cambia el texto del aviso de error?


SQL 2005


Respuesta Responder a este mensaje
#2 Heriberto Díaz
25/03/2008 - 13:48 | Informe spam

Otro enfoque a este problema sería tener una tabla de traducción de
errores con el mensaje de error y la traducción para el usuario, y cuando
se produce un error buscar la traducción y presentársela al usuario. Si el
mensaje de error no se encuentra en la tabla de traducciones podría
añadirse para más adelante asignarle una traducción, así poco a poco se
iría mejorando...





Dices de una 'tabla' en sql server o en la aplicacion (algun xml o algo
asi). Si es en sql server, implicaria entonces un viaje adicional al server
o hay alguna manera de tener el texto del error en el servidor antes de que
sea devuelto a la aplicacion?


Gracias
Respuesta Responder a este mensaje
#3 Jesús López
25/03/2008 - 14:31 | Informe spam
¿Qué importancia puede tener dar un viaje más al servidor para obtener el
mensaje de error?

Se supone que los errores van a ser escasos, prácticamente inexistentes,
sobre todo si la aplicación cliente hace también parte del trabajo de
validación (algo bastante común), con lo cual esos viajes adiciones van a
igualmente escasos. Así que yo no me preocuparía por ello.


Saludos:

Jesús López
www.solidq.com


"Heriberto Díaz" escribió en el mensaje
news:%
>
Otro enfoque a este problema sería tener una tabla de traducción de
errores con el mensaje de error y la traducción para el usuario, y cuando
se produce un error buscar la traducción y presentársela al usuario. Si
el mensaje de error no se encuentra en la tabla de traducciones podría
añadirse para más adelante asignarle una traducción, así poco a poco se
iría mejorando...





Dices de una 'tabla' en sql server o en la aplicacion (algun xml o algo
asi). Si es en sql server, implicaria entonces un viaje adicional al
server o hay alguna manera de tener el texto del error en el servidor
antes de que sea devuelto a la aplicacion?


Gracias

Respuesta Responder a este mensaje
#4 Jesús López
25/03/2008 - 14:47 | Informe spam
Por cierto, en SQL Server 2005 puedes obtener el mensaje de error con la
función ERROR_MESSAGE() si metes las instrucciones en un try...catch. En SQL
Server 2000, que yo sepa sólo puedes obtener el número de error, usando la
función @@ERROR

Saludos:

Jesús López
www.soldiq.com
Respuesta Responder a este mensaje
#5 Heriberto Díaz
26/03/2008 - 00:28 | Informe spam
¿Qué importancia puede tener dar un viaje más al servidor para obtener el
mensaje de error?

Se supone que los errores van a ser escasos, prácticamente inexistentes,
sobre todo si la aplicación cliente hace también parte del trabajo de
validación (algo bastante común), con lo cual esos viajes adiciones van a
igualmente escasos.



En mi caso no es asi porque estamos definiendo la mayor cantidad de reglas
posibles de manera declarativa en la BD (para mi es lo mas correcto, de
hecho, no me gusta la pre-validacion innecesaria). Aunque eso es valido
tambien para una sola aplicacion, en nuestro caso varias aplicaciones
accederan la misma BD, por tanto, siempre que se pueda, preferimos poner la
regla en la BD, eso simplifica mucho el mantenimiento. No es asi? si estoy
errado tu opinion es bienvenida para aclararme.

No tan necesario quizas para el simple ejemplo que di sino para otros, los
errores de integridad los reportará el servidor, por eso es que deseo que
sean mas amigables o entendibles. Y síp, pueden ser frecuentes porque habrá
tanto pantallas de digitación transaccional de uso intensivo como tambien
procesos batch para insertar o modificar grupos de registros desde varias
aplicaciones que no necesariamente las controlaremos los que estamos
diseñando la BD.


Saludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida