Nuevo usando ADO.

Nuevo usando ADO.

Postby Simon » Wed Dec 08, 2010 12:56 am

Hola a todos estoy comenzando a usar ADO y ya me esta funcionando, pero no se como trabajar los errores.

Por ejemplo tengo una tabla llamada test que contiene 3 campos el primero es el primary key, inserto el registro con oConnect:Execute("insert into test(codigo, nombre, edad) values( '123','Prueba',33)"), hasta aqui todo bien, el problema es cuando intento volver a grabar en el primary key 123, da un error que capturo con try/catch, pero de donde saco el error que me indique que estoy intentando de duplicar una llave primaria ?

Tengo un par de dias buscando esto y no es que me da pereza sequir buscando, es que estoy contra reloj.

Saludos a todos
Simon
 
Posts: 105
Joined: Thu Oct 20, 2005 12:29 pm
Location: Maracaibo, Venezuela.

Re: Nuevo usando ADO.

Postby goosfancito » Wed Dec 08, 2010 4:03 am

intentas grabar de nuevo??? si te referis a UPDATE entonces controla que el tamanio del dato que estas actualizando sea IDENTICO al que declaras en la TABLa.

Me explico: si en la tabla declaraste
codigo char 10

antes de hacer hacer el UPDATE completa con espacios al final del dato (suplanto los espacios por # asi me explico mejor)

Dato ingresado: 001 antes de UPDATE tenes que hacer que ese codigo sea de 10 posiciones (como lo declaraste) o sea 001#######

Espero que te haya servido.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Nuevo usando ADO.

Postby Simon » Wed Dec 08, 2010 4:25 am

Hola goosfancito, gracias por responder.

Lo que deseo es controlar el error por eso no uso update, quiero duplicar un registro en el primary key para que el sql server me devuelva un error y luego quiero mostrar ese error usando try/catch.

Saludos.
Simon
 
Posts: 105
Joined: Thu Oct 20, 2005 12:29 pm
Location: Maracaibo, Venezuela.

Re: Nuevo usando ADO.

Postby goosfancito » Wed Dec 08, 2010 5:20 am

del foro implemente esto. a ver si te da una idea.


Code: Select all  Expand view
FUNCTION consultaSQl(sql, lVacio)
   LOCAL oRs
   LOCAL oError

   oRs:= createObject("ADODB.RecordSet")

   WITH OBJECT oRs
      :CursorLocation := 3    //AdUseClient
      :LockType       := 3    //adLockOptimist
      :CursorType     := 2    //adOpenKeyset
      :Source         := sql
      :ActiveConnection(oCn)
   END

   TRY
      oRs:Open()
   CATCH oError
      adoError(oError)
      RETURN NIL
   END

   IF (lVacio)
      IF oRs:Eof .and. oRs:Bof
         MsgStop("No hay registros")
         oRs:close()
         oRs:= NIL
         RETURN NIL
      ENDIF

      oRs:MoveFirst()
   ENDIF

   RETURN (oRs)

//------------------------------------------------------------------------------

FUNCTION adoError(oError)
   LOCAL oTmp

   FOR EACH oTmp IN oCn:oError
      IF (oError == NIL)
         oError:errorNew()
         oError:description:= "Error desconocido ADO"
      ELSE
         oError:Subcode:= oTmp:nativeerror
         oError:description:= oTmp:description
      ENDIF
   NEXT

   MsgStop((oError:description + CRLF), "Error " + oError:Operation + '' + oError:subsystem)

   RETURN(oError:subcode)
 
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Nuevo usando ADO.

Postby Simon » Thu Dec 09, 2010 1:51 pm

Hola goosfancito, me devuelve el siguiente error.

Code: Select all  Expand view

Application
===========
   Path and name: C:\FWH\samples\testado.exe (32 bits)
   Size: 1,867,776 bytes
   Time from start: 0 hours 0 mins 1 secs
   Error occurred at: 12/09/10, 09:33:33
   Error description: (DOS Error -2147352567) WINOLE/1007  Argument error: OERROR

Stack Calls
===========
   Called from:  => TOLEAUTO:OERROR(0)
   Called from: testado.prg => ADOERROR(124)
   Called from: testado.prg => ADOCOMMAND(110)
   Called from: testado.prg => MAIN(21)

System
======
   CPU type: Pentium(R) Dual-Core CPU       T4500  @ 2.30GHz 2300 Mhz
   Hardware memory: 2009 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Compiler version: Harbour 2.1.0beta1 (Rev. 14559)
   Windows version: 6.1, Build 7600

   Windows total applications running: 0

Variables in use
================
   Procedure     Type   Value
   ==========================
   TOLEAUTO:OERROR
     Param   1:    O    Class: ERROR
   ADOERROR
     Local   1:    U    
     Local   2:    N    0
   ADOCOMMAND
     Param   1:    O    Class: ERROR
     Param   2:    O    Class: TOLEAUTO
     Local   1:    U    
   MAIN
     Param   1:    O    Class: TOLEAUTO
     Param   2:    C    "insert into planta_ctg.dbo.test(name, phone, age) values('1234','456789',25)"
     Local   1:    C    "No se ha podido ejecutar el comando SQL !"
     Local   2:    L    .F.
     Local   3:    O    Class: ERROR

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFNTX

DataBases in use
================

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 WIN_OLEAUTO
     4 TOLEAUTO
     5 HBOBJECT
     6 TREG32

Memory Analysis
===============
      234 Static variables

   Dynamic memory consume:
      Actual  Value:          0 bytes
      Highest Value:          0 bytes

 
Simon
 
Posts: 105
Joined: Thu Oct 20, 2005 12:29 pm
Location: Maracaibo, Venezuela.

Re: Nuevo usando ADO.

Postby Simon » Thu Dec 09, 2010 2:12 pm

otra cosa, en casi todos lados encuentro este codigo

WITH OBJECT oRs
:CursorLocation := 3 //AdUseClient
:LockType := 3 //adLockOptimist
:CursorType := 2 //adOpenKeyset
:Source := cSql
:ActiveConnection( oCn )
END

pero a mi no me funciona asi, me da error de argumentos en :activeconnection, pero si lo cambio por

WITH OBJECT oRs
:CursorLocation := 3 //AdUseClient
:LockType := 3 //adLockOptimist
:CursorType := 2 //adOpenKeyset
:Source := cSql
:ActiveConnection:= oCn
END

Funciona perfectamente.
Simon
 
Posts: 105
Joined: Thu Oct 20, 2005 12:29 pm
Location: Maracaibo, Venezuela.

Re: Nuevo usando ADO.

Postby goosfancito » Fri Dec 10, 2010 1:18 am

bien. lo importante que funciono. en mi caso uso el metodo que te pase. habria que ver el codigo fuente a ver como lo toma.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Nuevo usando ADO.

Postby Simon » Fri Dec 10, 2010 3:50 am

NO, aun no me funciona, me da un error en la forma de tratar el error, te pregunto algo yo uso harbour, que usas tu ?

asumo que el toleauto no es de fivewin sino de harbour.
Last edited by Simon on Fri Dec 10, 2010 4:31 am, edited 1 time in total.
Simon
 
Posts: 105
Joined: Thu Oct 20, 2005 12:29 pm
Location: Maracaibo, Venezuela.

Re: Nuevo usando ADO.

Postby Daniel Garcia-Gil » Fri Dec 10, 2010 4:04 am

MI estimado Maracucho

Por la via que has escogido, al usar ADO te recomiendo veas este blog http://sqlcmd.blogspot.com

si tu opcion es solo usar MySql te recomeindo las clase TDolphin http://tdolphin.blogspot.com (gratuita) o eagle http://es.groups.yahoo.com/group/eagle1 (comercial)
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Nuevo usando ADO.

Postby Simon » Fri Dec 10, 2010 5:18 am

Hola daniel, te cuento un poco, la clase eagle 1 la compre cuando salio, porque la empresa donde trabajaba pretendia usar mysql, luego compro microsoft dyamics y terminamos usando ms sql server 2005, y no use nunca la eagle 1, solo hice 2 pruebas y ya.

Desde un principio me acostumbre a usar ms sql server y todos los desarrollos los hacemos con ms sql, antes todo lo hacia por odbc, ahora me dio por probar el ado y me encanto la velocidad.

Saludos.
Simon
 
Posts: 105
Joined: Thu Oct 20, 2005 12:29 pm
Location: Maracaibo, Venezuela.

Re: Nuevo usando ADO.

Postby goosfancito » Fri Dec 10, 2010 9:15 am

uso xhaarbour. pero te paso lo link de donde vi lo que te pase/.
http://wiki.fivetechsoft.com/doku.php?id=ado-related_stuffs&s=ado
http://forums.fivetechsupport.com/viewtopic.php?f=6&t=9890
http://forums.fivetechsupport.com/viewtopic.php?p=47676#47676

Empece con esos post y me di mania. Quizas esas personas que tienen mas experiencia en ADO te puedan guiar mucho mejor.

Gustavo.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: FiveWiDi and 45 guests