Hola, estoy comenzando con ADO. Tengo el siguiente problema: no puedo visualizar los errores que me devuelve la base de datos. Utilicé primero la funcion showerror que figura en los post, y luego la adoerror.
Les paso ambas:
FUNCTION AdoError(oCon, oError)
LOCAL oTmp
FOR EACH oTmp IN oCon:Errors // oAdoErrors
IF oError == nil
oError := ErrorNew()
oError:Description := "Error desconocido ADO"
ELSE
oError:SubCode := oTmp:NativeError //¡¡¡num. error nativo
oError:Description := oTmp:Description
ENDIF
NEXT
MSGSTOP ( (oError:Description + CRLF ) , ;
" Error " + oError:Operation + ' ' + oError:SubSystem )
RETURN (oError:SubCode) // Código num. del error
y
//-----------------------------------------//
FUNCTION ShowError( oError )
local cError := ""
cError += " Descripción : " + oError:Description
cError += " SubSystem : " + oError:SubSystem
cError += " Error Number : " + Str( oError:SubCode )
cError += " Severity : " + Str( oError:Severity )
RETURN NIL
y lo que hago es definir un rercordset oRS, completarlo con un select, y ejecutarlo. Funciona OK, cuando uso el SHOWERROR, no me muestra nada y sigue, y con el ADOERROR sale del programa.
¿alguna pista?
Gracias desde ya:
cQry = "select * from autores"
oRS:cursorLocation = 3 //adUseClient
oRS:lockType = 3 //adLockOptimistic
oRS:cursorType = 2 //adOpenDynamic
oRS:source = cQry
oRS:activeConnection = oServer
TRY
oRS:open()
CATCH oError
? "Build RecordSet Failed!!! "+xtabla
ShowError( oError )
END
capturar error db ADO
-
- Posts: 149
- Joined: Thu Jun 21, 2007 3:26 pm
Re: capturar error db ADO
bueno... me autocontesto... aca va la funcion bien hecha... gracias a devguru...!!!
// ----------------------------------------------
FUNCTION AdoError(oCon, oError)
LOCAL oTmp, x, n, xstrerror
x:=ocon:errors:count()
FOR n=0 to x-1 // oAdoErrors
xstrerror:="Descrip.: "+ocon:errors:item(n):Description+CRLF
xstrerror:=xstrerror+"SQLState: "+ocon:errors:item(n):SQLState+CRLF
xstrerror:=xstrerror+"NativeError: "+alltrim(str(ocon:errors:item(n):NativeError))+CRLF
xstrerror:=xstrerror+" ---------- "
NEXT
MSGSTOP ( xstrerror, "Error")
RETURN nil
y la invocamos asi:
TRY
oRS:open()
CATCH oError
AdoError(oServer, oError)
END
por supuesto, con el oRS definido como corresponde... Gracias...!!!
// ----------------------------------------------
FUNCTION AdoError(oCon, oError)
LOCAL oTmp, x, n, xstrerror
x:=ocon:errors:count()
FOR n=0 to x-1 // oAdoErrors
xstrerror:="Descrip.: "+ocon:errors:item(n):Description+CRLF
xstrerror:=xstrerror+"SQLState: "+ocon:errors:item(n):SQLState+CRLF
xstrerror:=xstrerror+"NativeError: "+alltrim(str(ocon:errors:item(n):NativeError))+CRLF
xstrerror:=xstrerror+" ---------- "
NEXT
MSGSTOP ( xstrerror, "Error")
RETURN nil
y la invocamos asi:
TRY
oRS:open()
CATCH oError
AdoError(oServer, oError)
END
por supuesto, con el oRS definido como corresponde... Gracias...!!!