capturar error db ADO

Post Reply
diegopolverelli
Posts: 149
Joined: Thu Jun 21, 2007 3:26 pm

capturar error db ADO

Post by diegopolverelli »

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
diegopolverelli
Posts: 149
Joined: Thu Jun 21, 2007 3:26 pm

Re: capturar error db ADO

Post by diegopolverelli »

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...!!!
Post Reply