Error con tdbobdc + xbrowse + mdi

Error con tdbobdc + xbrowse + mdi

Postby Simon » Fri Nov 26, 2010 12:32 pm

Estoy construyendo una aplicación y me sale un error cuando trato de usar un xbrowse (con un recordset creado con tdbodbc) en una ventana mdi, el error es SQLExtendFetch on Goto() method [#4626092] class: (y una serie de caracteres aleatorios).

Si quito las clausulas mdi y creo dos ventanas independientes si muestra los registros, pero al darle click al xbrowse da el mismo error, si hago el xbrowse directamente en la ventana principal no da ningun error y funciona perfectamente.

No creo que sea un error de conexion con el servidor sql (sql server 2005) ya que si hago un recorido (he probado con skip(), goto(), etc.) del recordset me muestra todos los datos perfectamente.

Luego me puse creativo y probe usando un dialogo en vez de una ventana y funciona, luego pense en usar una ventana y ponerle un dialogo child, pero al darle la clausula NOWAIT al dialogo zas el mismo error.

segmento de codigo
Code: Select all  Expand view


function main()
    define window owndmain mdi

   oOdbc := TOdbc():New(cDsn, cName, cPass)

   If !oOdbc:lSuccess
      oOdbc:ShowErrorList("La sesion no se ha podido establecer, abortando...")
      oOdbc:End()
      return nil
   Endif
.
.
.
@ 2, 70 ADD BUTTON oBtn2 PROMPT "Productos" TOP GROUP oGr_1_1 BITMAP ".\BMP\product-32.BMP" ;
     SIZE 60, 80  ROUND ;
     action ( OPENTABLE( "Productos", "select * from ctaarticulos", oOdbc ) )
.
.
.
    activate window owndmain
oOdbc:end()
return nil

function opentable( cHeader, cQuery, oOdbc )
 oDbf := TDbOdbc():new( cQuery, oOdbc )
 mybrowse( cHeader, oDbf )
return nil

function mybrowse( cHeader, oDbf )
   DEFINE WINDOW oWnd TITLE cHeader + " Todos los registros ( " + alltrim( str( odbf:reccount(), 10, 0 ) ) +" registros )";
        from 0,0 to 500, 800 pixel mdichild of oWndmain NOMAXIMIZE NORESIZE

   @ 0,0 XBROWSE oBrw OF oWnd RECSET odbf AUTOCOLS FOOTERS ;
         LINES CELL
   oBrw:CreateFromCode()

   oWnd:oClient := oBrw

activate window ownd on init oBrw:SetFocus()

return nil

 


Ayuda por favor estoy trancadisimo con esto.

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

Re: Error con tdbobdc + xbrowse + mdi

Postby Lautaro » Fri Nov 26, 2010 2:42 pm

Simon,

Si estas programando con mdi, recuerda que la ejecucion del programa no se detiene en el punto del activate window, alli activa la ventana y sigue adelante, por lo que ejecuta la instruccion oOdbc:end() y se cierra tu coneccion.

Lo que debes hacer es mover esa instruccion a el evento de cierre de la ventana u a otro que tu estimes, pero debe ser controlado.

Atte.,

Lautaro Moreira
Osorno
Chile
User avatar
Lautaro
 
Posts: 322
Joined: Fri Oct 07, 2005 2:44 pm
Location: Osorno, Chile

Re: Error con tdbobdc + xbrowse + mdi

Postby Simon » Fri Nov 26, 2010 3:02 pm

Lautaro, gracias por responder.

Puse el oOdbc:end() al cerrar la ventana principal y continua el error.

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

Re: Error con tdbobdc + xbrowse + mdi

Postby Lautaro » Fri Nov 26, 2010 3:14 pm

Simon,

En que linea te da el error ????


Atte.,

Lautaro
User avatar
Lautaro
 
Posts: 322
Joined: Fri Oct 07, 2005 2:44 pm
Location: Osorno, Chile

Re: Error con tdbobdc + xbrowse + mdi

Postby Simon » Fri Nov 26, 2010 3:39 pm

Cuando esta pintando el xbrowse sale un dialogo que muestra el mensaje sqlextendedfetch ...... y si le das aceptar, te vuelve a salir el dialogo tantas veces como le des aceptar y no te deja hacer nada mas.

Asi que no es un error que aborta la ejecucion del programa.

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

Re: Error con tdbobdc + xbrowse + mdi

Postby Lautaro » Fri Nov 26, 2010 3:58 pm

Hola,

Si mal no recuerdo a un cursor odbc hay que llamar al metodo open antes de hacer cualquier cosa.

Ojo, estoy hablando de memoria.

atte.,

Lautaro Moreira
User avatar
Lautaro
 
Posts: 322
Joined: Fri Oct 07, 2005 2:44 pm
Location: Osorno, Chile

Re: Error con tdbobdc + xbrowse + mdi

Postby Simon » Fri Nov 26, 2010 5:02 pm

Ese no es el problema,

Funciona en un dialogo y/o un entorno sdi.

El metodo open es para la clase tdbodbcdirect, y yo estoy usando tdbodbc.

el metodo open si la memoria no me falla mete el resultado del query en una tabla dbf/cdx lo que la hace sumamente lenta con tablas grandes.

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

Re: Error con tdbobdc + xbrowse + mdi

Postby Lautaro » Fri Nov 26, 2010 6:29 pm

Simon,

Tienes razon ( hace tiempo que no trabajo con odbc ), pero tambien recuerdo que el tdbodbc solo soporta skip hacia adelante no hacia atras y es ahi donde te da el error, cuando obtiene la linea, que es en el metodo fetch(), el que hace la llamada a sqlextendedfetch.


Verifica que tu driver permita consultas que no sean de solo avance.

Espero ayudarte con eso.

Lautaro Moreira
User avatar
Lautaro
 
Posts: 322
Joined: Fri Oct 07, 2005 2:44 pm
Location: Osorno, Chile

Re: Error con tdbobdc + xbrowse + mdi

Postby Simon » Fri Nov 26, 2010 7:01 pm

Lautaro tenias razon a la primera, le puse el odbc:end() al salir de la ventana principal, pero tenia un odbf:end() al final de la creacion de la ventana hija, lo comente y listo ya funciona y se ve muy bien.

Ves 2 cabezas piensan mejor que una, gracias por interesarte en ayudarme a encontrar una solución.
Simon
 
Posts: 105
Joined: Thu Oct 20, 2005 12:29 pm
Location: Maracaibo, Venezuela.

Re: Error con tdbobdc + xbrowse + mdi

Postby Lautaro » Sat Nov 27, 2010 7:15 pm

Simon,

Es un placer ayudar, cuando yo empece a dejar las dbfs y empece a usar otro motor de datos, lo primero fue odbc y no te imaginas lo duro que fue el cambio, no habia documentacion y no habian ejemplos.

Me es muy gratificante saber que en algo puedo hacer mas facil la transicion a otro colega.


Saludos,

Lautaro Moreira
Osorno
Chile
User avatar
Lautaro
 
Posts: 322
Joined: Fri Oct 07, 2005 2:44 pm
Location: Osorno, Chile


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 7 guests

cron