ADORDD para Antonio H.

ADORDD para Antonio H.

Postby xmanuel » Mon Apr 13, 2015 8:12 pm

Veo en ecódigo esto:
Code: Select all  Expand view

FUNCTION ADODB_CLOSE()
 // oConnection STATIC VAR that mantains te adodb connection the same for all recordsets
 //this is to enable transactions in several recordsets because transactions is per connection
 //this it to be called within an exit proc of the application
 // or whnever we dont need it anymore.
 
   IF ! Empty( oConnection )
      IF oConnection:State != adStateClosed
         IF oConnection:State != adStateOpen
            oConnection:Cancel()
         ELSE
            oConnection:Close()
         ENDIF
      ENDIF
  ENDIF
     
  RETURN .T.
   
   
STATIC FUNCTION ADO_CLOSE( nWA )

   LOCAL aWAData := USRRDD_AREADATA( nWA )
   LOCAL oRecordSet := USRRDD_AREADATA( nWA )[ WA_RECORDSET ]
   
   //dont close connection as mugh be used by other recorsets
   // need to have all recordsets in same connection to use transactions
   IF !EMPTY( oRecordSet)
      IF oRecordSet:State = adStateOpen
         oRecordSet:Close()
      ENDIF
   ENDIF     
   
   DO WHILE oRecordSet:State != adStateClosed ; ENDDO
   
   oRecordSet := NIL
   
   RETURN UR_SUPER_CLOSE( nWA )

 

Antonio lo que he puesto no lo entiendo muy bien...

Para que sirve FUNCTION ADODB_CLOSE()...
Si alguien la usa, y lo puede hacer porque no es una función staic se cargaría el control de la RDD ya que el array interno USRRDD_AREADATA no estaría actualizado y cualquier función DB...() funcionaría de una manera herrática.

Por otro lado esta línea de código no se convertiría en un bucle infinito si oRecordSet:Close() falla?
DO WHILE oRecordSet:State != adStateClosed ; ENDDO
salvo que el atributo State fuera realmente un método. Recuerda que en los objetos binarios como los antiguas ActiveX, ole dole y por tabto ADO no debería de usarse los atributos directamente sino los métodos SET GET que proporciona el objeto binario ADO...

Sólo son apreciaciones para mejorar pero sin ninguna otra pretensión ya que no he entrado en más interioridades de ADO.

Saludos y gracias por tu gran esfuerzo.

PD. No sé de qué parte de Protugal eres, pero temgo previsto visitarla, así que si tenemos tiempo nos podríamos saludar en vivo :-)
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 756
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: ADORDD para Antonio H.

Postby AHF » Tue Apr 14, 2015 5:59 pm

Antonio lo que he puesto no lo entiendo muy bien...

Para que sirve FUNCTION ADODB_CLOSE()...
Si alguien la usa, y lo puede hacer porque no es una función staic se cargaría el control de la RDD ya que el array interno USRRDD_AREADATA no estaría actualizado y cualquier función DB...() funcionaría de una manera herrática.

Por otro lado esta línea de código no se convertiría en un bucle infinito si oRecordSet:Close() falla?
DO WHILE oRecordSet:State != adStateClosed ; ENDDO
salvo que el atributo State fuera realmente un método. Recuerda que en los objetos binarios como los antiguas ActiveX, ole dole y por tabto ADO no debería de usarse los atributos directamente sino los métodos SET GET que proporciona el objeto binario ADO...

Sólo son apreciaciones para mejorar pero sin ninguna otra pretensión ya que no he entrado en más interioridades de ADO.

Saludos y gracias por tu gran esfuerzo.

PD. No sé de qué parte de Protugal eres, pero temgo previsto visitarla, así que si tenemos tiempo nos podríamos saludar en vivo :-)


Manuel,

Google translate:

FUNCIÓN ADODB CERRAR (). Está aún en pruebas, así que será estudiar más tarde. La idea es que el usuario puede cerrar la conexión cuando ya no es necesaria.
DO WHILE oRecordSet: Estado = adStateClosed;! ENDDO
Es precisamente para probar si: Close () funciona correctamente. Tengo error extraño al cerrar la ventana MDI con Browse Obj.
Solamente aquí para la prueba.

Estoy en Sintra. Envíame un correo electrónico.

¿Has probado ADORDD
Regards
Antonio H Ferreira
AHF
 
Posts: 838
Joined: Fri Feb 10, 2006 12:14 pm

Re: ADORDD para Antonio H.

Postby xmanuel » Tue Apr 14, 2015 8:07 pm

Hola Antonio...

Si quieres que la función ADODB_CLOSE() funcione correctamente debes adaptarla para que haga una llamada al método statico del RDD ADO_CLOSE( nWA ).
En la función ADODB_CLOSE() deberías pasarle algún parámetro ya sea nWA o el objeto oConnection .

Precisamente a Sintra es uno de lus lugares que voy a visitar seguro, mi hermana ha estado y le ha gustado mucho, además está cerca de Lisboa...

Mi correo es xmessofxxxgmail.com
Sustituye xxx por @

Salu2
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 756
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 102 guests