FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Duda con recordset y dialogo modal
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Duda con recordset y dialogo modal
Posted: Wed May 26, 2010 08:12 AM
Hola amigos,

Otra vez les tengo que consultar una duda m谩s bien de concepto que de sintaxis.
Mi caso es el siguiente:

Desde mi ventana principal (trabajo con MDI), llamo a una ventana MDICHILD que abre un dialogo NO MODAL.
Este dialogo muestra un XBrowse de una tabla.

El problema es que si despues de
Code (fw): Select all Collapse
ACTIVATE DIALOG oDlg ...


Cierro el recordset
Code (fw): Select all Collapse
oRs:Close()


Me genera error al moverme por el xbrowse pues se cerr贸 el recordset al ser un dialogo de ejecuci贸n NO MODAL.

Mi pregunta es, 驴como puedo controlar el cierre del recordset?
Ya que ahora lo abro al iniciar el dialogo, pero no lo puedo cerrar.
No me gusta la idea de mantener abiertos los RS en toda la aplicaci贸n, sino que solo los abro
cuando los necesito.

Amigos, ya ven que no s茅 c贸mo decirle en qu茅 momento puedo cerrar el recordset.
No conocia este problema hasta que tuve que empezar a trabajar con dialogos NO MODALES.

Cualquier idea o sugerencia, como siempre, ser谩 muy bien recibida.

Gracias y un saludo.
:-)
Javier,

FWH 8.04 2008
Posts: 1335
Joined: Fri Jun 13, 2008 11:04 AM
Re: Duda con recordset y dialogo modal
Posted: Wed May 26, 2010 08:45 AM
Code (fw): Select all Collapse
ACTIVATE DIALOG oDlg VALID (oRs:Close(),.T.)


Regards
Anser
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Duda con recordset y dialogo modal
Posted: Mon Jun 07, 2010 06:13 AM
Anser,

gracias por tu respuesta, pero al salir del dialogo, me genera un error del tipo:

Error description: Error ADODB.RecordSet/6 DISP_E_UNKNOWNNAME: RECORDCOUNT

El codigo que uso es este:

Code (fw): Select all Collapse
ACTIVATE DIALOG oDlg NOWAIT VALID (oRs:Close, .T. )
Javier,

FWH 8.04 2008
Posts: 151
Joined: Wed Oct 12, 2005 01:03 PM
Re: Duda con recordset y dialogo modal
Posted: Mon Jun 07, 2010 12:06 PM

Yo uso lo siguiente con ventanas

ACTIVATE WINDOW oWND20 ON INIT oBRWNOTAENT:SETFOCUS() VALID(CNOTAENT())

FUNCTION CNOTAENT
oBRWNOTAENT:LCLOSEAREA()
IF oRNEN#NIL
IF oRNEN:STATE()=1
oRNEN:CLOSE()
ENDIF
ENDIF
RETURN( .T. )

Marco Augusto Rodriguez Manzo

FWH January 2020 Xharbour 1.2.3

MySQL 5.0.19 Fastreport



PERZO SOFT

Sistemas Personalizados
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Duda con recordset y dialogo modal
Posted: Mon Jun 07, 2010 02:02 PM

Gracias Marco,

Lo probar茅 en cuanto pueda, a ver que tal va.

Javier,

FWH 8.04 2008
Posts: 1335
Joined: Fri Jun 13, 2008 11:04 AM
Re: Duda con recordset y dialogo modal
Posted: Tue Jun 08, 2010 05:00 AM
Did you try bPostEnd (From FWH 10.2 onwards)

Code (fw): Select all Collapse
oWnd:bPostEnd  := { || oRs:Close() }


* New: DATA bPostEnd of class TMdiChild in mdichild.prg:
Any code, mostly clean up code, to be executed after an mdichild window is closed can be assigned to this
codeblock. This is in contrast to bValid, which is executed before the window and all the controls are closed.
For example, it may be safer to close dbfs, recordsets, etc used by the controls in the bPostEnd codeblock
rather than in the bValid codeblock. bPostEnd is evaluated after the mdichild is closed, without any parameters.
Window object or any controls of the window should not be referred in this codeblock because they are no more
available when this codeblock is executed.


You may also read a very good example provided by Mr.Rao on the below given link

viewtopic.php?f=3&t=18270

Regards
Anser

Continue the discussion