Tratamiento de errores

15/06/2006 - 19:54 por guarracuco | Informe spam
Sres. tengo acceso a SQL SERVER por medio de una conexión con ADO. ¿Cómo
obtengo los errores de SQL SERVER?
atte carlos
guarracuco/venezuela

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
15/06/2006 - 20:33 | Informe spam
guarracuco,

Que lenguaje de programacion estas usando. El objeto "connection" de ADO,
tiene
una coleccion llamada "errors" la cual cual perimte recuperar informacion
sobre errores en la coneccion.

INFO: Extracting Error Information from ADO in VB
http://support.microsoft.com/defaul...-us;167957


AMB

"guarracuco" wrote:

Sres. tengo acceso a SQL SERVER por medio de una conexión con ADO. ¿Cómo
obtengo los errores de SQL SERVER?
atte carlos
guarracuco/venezuela
Respuesta Responder a este mensaje
#2 guarracuco
15/06/2006 - 20:55 | Informe spam
Gracias Alejandro, uso Visual Basic; es correcto lo que indicas, pero no
puedo manejar de esa manera los errores; es decir, casi siempre sale el error
número -2147217900 cuando no puedes actualizar, o no se cumple una regla de
validacion, etc.
Estoy revisando si envío a un procedimiento almacenado la cadena sql con la
accion, y ver si allí se genera el error.
atte carlos
guarracuco/venezuela


"Alejandro Mesa" escribió:

guarracuco,

Que lenguaje de programacion estas usando. El objeto "connection" de ADO,
tiene
una coleccion llamada "errors" la cual cual perimte recuperar informacion
sobre errores en la coneccion.

INFO: Extracting Error Information from ADO in VB
http://support.microsoft.com/defaul...-us;167957


AMB

"guarracuco" wrote:

> Sres. tengo acceso a SQL SERVER por medio de una conexión con ADO. ¿Cómo
> obtengo los errores de SQL SERVER?
> atte carlos
> guarracuco/venezuela
Respuesta Responder a este mensaje
#3 Alejandro Mesa
15/06/2006 - 21:15 | Informe spam
guarracuco,

Tambien puedes usar el objeto Err de vb.


AMB

"guarracuco" wrote:

Gracias Alejandro, uso Visual Basic; es correcto lo que indicas, pero no
puedo manejar de esa manera los errores; es decir, casi siempre sale el error
número -2147217900 cuando no puedes actualizar, o no se cumple una regla de
validacion, etc.
Estoy revisando si envío a un procedimiento almacenado la cadena sql con la
accion, y ver si allí se genera el error.
atte carlos
guarracuco/venezuela


"Alejandro Mesa" escribió:

> guarracuco,
>
> Que lenguaje de programacion estas usando. El objeto "connection" de ADO,
> tiene
> una coleccion llamada "errors" la cual cual perimte recuperar informacion
> sobre errores en la coneccion.
>
> INFO: Extracting Error Information from ADO in VB
> http://support.microsoft.com/defaul...-us;167957
>
>
> AMB
>
> "guarracuco" wrote:
>
> > Sres. tengo acceso a SQL SERVER por medio de una conexión con ADO. ¿Cómo
> > obtengo los errores de SQL SERVER?
> > atte carlos
> > guarracuco/venezuela
Respuesta Responder a este mensaje
#4 Victor Koch
15/06/2006 - 21:44 | Informe spam
Hola Guarracuco

La forma de manejar los errores para cualquier base de datos con ADO es
esta:

On Error GoTo ErAbrir

Dim Cnn As ADODB.Connection
Dim ErrLoop As ADODB.Error
Dim StrError As String

Set Cnn = New ADODB.Connection

With Cnn
.Provider = "SQLOLEDB"
.Properties("Data Source").Value = DataSource
.Properties("Initial Catalog").Value = Catalogo
.Properties("User ID").Value = UID
.Properties("Password").Value = password
.Open
End With

Sale:
Exit ..

ErAbrir:
If Cnn.Errors.Count > 0 Then
For Each ErrLoop In Cnn.Errors
StrError = "Error Nº: " & ErrLoop.Number & vbCr & vbLf
StrError = StrError & " " & ErrLoop.Description & vbCr & vbLf
StrError = StrError & " (Origen: " & ErrLoop.Source & ")" &
vbCr & vbLf
StrError = StrError & " (Estado de SQL: " & ErrLoop.SqlState &
")" & vbCr & vbLf
StrError = StrError & " (Error nativo: " & ErrLoop.NativeError
& ")" & vbCr & vbLf
If ErrLoop.HelpFile <> "" Then
StrError = StrError & " (Archivo de Ayuda: " &
ErrLoop.HelpFile & ")" & vbCr & vbLf
StrError = StrError & " (Contexto de Ayuda: " &
ErrLoop.HelpContext & ")" & vbCr & vbLf
End If
MsgBox StrError, vbCritical, "Abrir COnexión"
Next
Else
StrError = "Error Nº: " & Err.Number & vbCr & vbLf
StrError = StrError & " " & Err.Description & vbCr & vbLf
StrError = StrError & " (Origen: " & Err.Source & ")" & vbCr &
vbLf
If Err.HelpFile <> "" Then
StrError = StrError & " (Archivo de Ayuda: " & Err.HelpFile &
")" & vbCr & vbLf
StrError = StrError & " (Contexto de Ayuda: " &
Err.HelpContext & ")" & vbCr & vbLf
End If
MsgBox StrError, vbCritical, "Abrir COnexión"
End If
Resume Sale


El ejemplo que te puse es para abrir una conexion pero la rutina de manejo
de errores, desde ErAbrir hasta el final es igual para abrir un recordset o
ejecutar una sentencia.

Un saludo, Víctor Koch.


"guarracuco" escribió en el mensaje
news:
Sres. tengo acceso a SQL SERVER por medio de una conexión con ADO. ¿Cómo
obtengo los errores de SQL SERVER?
atte carlos
guarracuco/venezuela
Respuesta Responder a este mensaje
#5 guarracuco
16/06/2006 - 02:13 | Informe spam
Alejandro y Victor, son muy amables al responder.
Estaba haciendo un for next en las colecciones de error de la conexion, pero
a la segunda pasada aparecía el contador en cero; con las líneas que envía
Koch creo resolveré.
A nivel de usuario, valido antes de enviar la cadena al servidor, ya que un
bucle que carga un recordset compara el atributo de cada campo; entonces
compara cada valor de cada cuadro de texto del form (que tiene elmismo nombre
de cada campo) y si és nulo, se interrumpe la creacion de cadena SQL. Es un
modulo recursivo donde paso nombre de tabla y de formulario, y un par de
argumentos opcionales.
Sres muy agradecido.
guarracuco/venezuela


"Victor Koch" escribió:

Hola Guarracuco

La forma de manejar los errores para cualquier base de datos con ADO es
esta:

On Error GoTo ErAbrir

Dim Cnn As ADODB.Connection
Dim ErrLoop As ADODB.Error
Dim StrError As String

Set Cnn = New ADODB.Connection

With Cnn
.Provider = "SQLOLEDB"
.Properties("Data Source").Value = DataSource
.Properties("Initial Catalog").Value = Catalogo
.Properties("User ID").Value = UID
.Properties("Password").Value = password
.Open
End With

Sale:
Exit ..

ErAbrir:
If Cnn.Errors.Count > 0 Then
For Each ErrLoop In Cnn.Errors
StrError = "Error Nº: " & ErrLoop.Number & vbCr & vbLf
StrError = StrError & " " & ErrLoop.Description & vbCr & vbLf
StrError = StrError & " (Origen: " & ErrLoop.Source & ")" &
vbCr & vbLf
StrError = StrError & " (Estado de SQL: " & ErrLoop.SqlState &
")" & vbCr & vbLf
StrError = StrError & " (Error nativo: " & ErrLoop.NativeError
& ")" & vbCr & vbLf
If ErrLoop.HelpFile <> "" Then
StrError = StrError & " (Archivo de Ayuda: " &
ErrLoop.HelpFile & ")" & vbCr & vbLf
StrError = StrError & " (Contexto de Ayuda: " &
ErrLoop.HelpContext & ")" & vbCr & vbLf
End If
MsgBox StrError, vbCritical, "Abrir COnexión"
Next
Else
StrError = "Error Nº: " & Err.Number & vbCr & vbLf
StrError = StrError & " " & Err.Description & vbCr & vbLf
StrError = StrError & " (Origen: " & Err.Source & ")" & vbCr &
vbLf
If Err.HelpFile <> "" Then
StrError = StrError & " (Archivo de Ayuda: " & Err.HelpFile &
")" & vbCr & vbLf
StrError = StrError & " (Contexto de Ayuda: " &
Err.HelpContext & ")" & vbCr & vbLf
End If
MsgBox StrError, vbCritical, "Abrir COnexión"
End If
Resume Sale


El ejemplo que te puse es para abrir una conexion pero la rutina de manejo
de errores, desde ErAbrir hasta el final es igual para abrir un recordset o
ejecutar una sentencia.

Un saludo, Víctor Koch.


"guarracuco" escribió en el mensaje
news:
> Sres. tengo acceso a SQL SERVER por medio de una conexión con ADO. ¿Cómo
> obtengo los errores de SQL SERVER?
> atte carlos
> guarracuco/venezuela



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida