Manejo de errores de sql con VB
Publicado por nordri (1 intervención) el 25/05/2007 11:39:07
Hola, estoy intentando capturar los errores en VisualBasic que me envia SQL Server, para ello con mi ADODB creo una coleccion de errors y los recorro en un bucle, pero me llega vacia, la colección no trae ningún elemento dentro. Por más que busco no encuentro otra manera de hacer esto que la que hago yo (que es la que viene en la ayuda del Access). Os pego el código y a ver si podeis indicarme dónde está el fallo. Gracias.
-------------------------------------------
Option Compare Database
Option Explicit
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strError As String
Dim Errs As ADODB.Error
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Dim errLoop As Error
Set Errs = cnn.Errors
' Solución de la ayuda de Access
For Each errLoop In Errs
strError = "Error #" & errLoop.Number & vbCr & _
" " & errLoop.Description & vbCr & _
" (Origen: " & errLoop.Source & ")" & vbCr
If errLoop.HelpFile = "" Then
strError = strError & " No hay fichero de ayuda disponible."
Else
strError = strError & " (Fichero de ayuda: " & errLoop.HelpFile & ")" & vbCr
End If
MsgBox strError, vbOKOnly + vbExclamation, "Error"
Next
End Sub
Public Sub Form_Load()
Set cnn = Nothing
Set rst = Nothing
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Set cnn = CurrentProject.Connection
rst.Open "tblFechasPago", cnn, adOpenDynamic, adLockOptimistic
Set Me.Recordset = rst
Me.RecordSource = "tblFechasPago"
End Sub
---------------------------------------------------
Hay una diferecia y es que por ahí todos haces "on error goto ..." y yo lo he metido en una función aparte porque cuando
pongo on error goto directamente lo ignora y no entra, lo tengo probado con breakpoints y msgbox.
Saludos.
-------------------------------------------
Option Compare Database
Option Explicit
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strError As String
Dim Errs As ADODB.Error
Private Sub Form_Error(DataErr As Integer, Response As Integer)
Dim errLoop As Error
Set Errs = cnn.Errors
' Solución de la ayuda de Access
For Each errLoop In Errs
strError = "Error #" & errLoop.Number & vbCr & _
" " & errLoop.Description & vbCr & _
" (Origen: " & errLoop.Source & ")" & vbCr
If errLoop.HelpFile = "" Then
strError = strError & " No hay fichero de ayuda disponible."
Else
strError = strError & " (Fichero de ayuda: " & errLoop.HelpFile & ")" & vbCr
End If
MsgBox strError, vbOKOnly + vbExclamation, "Error"
Next
End Sub
Public Sub Form_Load()
Set cnn = Nothing
Set rst = Nothing
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Set cnn = CurrentProject.Connection
rst.Open "tblFechasPago", cnn, adOpenDynamic, adLockOptimistic
Set Me.Recordset = rst
Me.RecordSource = "tblFechasPago"
End Sub
---------------------------------------------------
Hay una diferecia y es que por ahí todos haces "on error goto ..." y yo lo he metido en una función aparte porque cuando
pongo on error goto directamente lo ignora y no entra, lo tengo probado con breakpoints y msgbox.
Saludos.
Valora esta pregunta


0