Manejo de errores Sql

06/10/2005 - 18:24 por Pablodegerli | Informe spam
Hola amigos
Estoy conectandome al Sql desde Vb con Ado y manejando los errores dentro de
los Sp
Al usuario le muestro un mensaje personalizado pero quiero capturar en un
Log los errores para facilitar el encontrarlos
Las operaciones son del tipo

Insert Into Ajuste(Motivo, Id_Cliente, Id_Tipo_Ajuste, Bultos, Pcb, Sentido,
Id_Producto, Id_UsuarioAlta)
values (@Motivo, @Id_Cliente, @Id_Tipo_Ajuste, @Bultos, @Pcb, @Sentido,
@Id_Producto, @Id_UsuarioAuditoria )
set @Err = @@error
if @Err <> 0
begin
rollback transaction
return @Err
end
set @Id_Ajuste = @@Identity

Quisiera que en caso de error salga por el return y desde el vb capturar no
solo el numero de error sino la descripcion detallada que veo al procesar en
el QA del tipo

Servidor: mensaje 515, nivel 16, estado 2, procedimiento SpAjuste_I, línea
77
No se puede insertar el valor NULL en la columna 'Sentido', tabla
'Desarrollo.dbo.Ajuste'. La columna no admite valores NULL. INSERT falla.

Dado que desde Vb solo puedo obtener el Return_Value que es 515
Puedo buscar el error obteniendo

Select Error, Description from Master.Dbo.SysMessages where Error = 515 and
msglangid = 3082
'No se puede insertar el valor NULL en la columna '%1!', tabla '%3!'. La
columna no admite valores NULL. %5! falla.'

Existe alguna forma de almacenar esa descripcion detallada

Como siempre, Gracias de antemano

Preguntas similare

Leer las respuestas

#1 Maxi
06/10/2005 - 18:27 | Informe spam
Hola, ea informacion detallada esta en la tabla de mensajes!! en sql2005 esl
control de errores es muy superior a esta version, aca deberias capturar el
numero y luego con ese numero mostrar un mensaje al usuario.

En www.sqlteam.com y www.sqlservercentral.com encontraras una infinidad de
ejemplos


Salu2
Maxi


"Pablodegerli" escribió en el mensaje
news:Oag$
Mostrar la cita
#2 Javier Rojas Goñi/ Parse Software
06/10/2005 - 18:32 | Informe spam
usa ADO Erro Collection,

strError = ""
Set errorCollection = adoConnection.Errors
For Each errLoop In errorCollection
With errLoop
strError = "Error #" & iCounter & vbCrLf
strError = strError & " ADO Error #" & .Number & vbCrLf
strError = strError & " Description " & .Description & vbCrLf
strError = strError & " Source " & .Source & vbCrLf
Debug.Print strError
iCounter = iCounter + 1
End With
Next

SAludos

Javier Rojas Goñi
PARSE Software Chile
-

56-32-666366


-

"Pablodegerli" escribió en el mensaje
news:Oag$
Mostrar la cita
#3 Pablodegerli
06/10/2005 - 21:01 | Informe spam
Justo lo que necesitaba
con cnn.Errors.Count > 0 detecto que dio error
Muchas gracias

"Javier Rojas Goñi/ Parse Software" escribió en el mensaje
news:%
Mostrar la cita
dentro
Mostrar la cita
un
Mostrar la cita
procesar
Mostrar la cita
línea
Mostrar la cita
falla.
Mostrar la cita
Ads by Google
Search Busqueda sugerida