Ayuda con TMemDataSet
Publicado: Dom Oct 19, 2008 7:33 am
No me explico que estoy haciendo mal, me estoy basando en ejemplo DBFdata6
para desarrollar una aplicación.
Estoy utilizando un TMemDataSet para mostrar y capturar los integrantes del
grupo que comanda un socio. todo funciona bien miestras se esta capturando
la información, pero al momento de grabar los datos el objecto "TMemDataSet"
se encuentra vacio cuando este ya contenia información. les muestro parte
del codigo a ver quien puede decirme por donde va los tiros.
Este es mi browse que muestra los socios registrados.
//---------------------------------------------------------- ----
CLASS TFrmSocios FROM TFormFolder
METHOD SaveGrupo( oMemGrupo )
METHOD MantenAlta( oSender )
...
...
ENDCLASS
//---------------------------------------------------------- ----
METHOD MantenAlta( oSender ) CLASS TFrmSocios
WITH OBJECT TFrmSociEdi() <- Aqui llamo al procedimiento de
altas o modificaciones
:lOnAppend := .T.
:New( Application:oMainForm )
...
...
:RequestState()
IF :ShowModal() == mrOK
IF :lGrupoChanged
::SaveGrupo( :oMemGrupo ) <- Regresa vacio ":oMemGrupo"
ENDIF
ELSE
::oDbfSocios:Cancel()
ENDIF
END WITH
RETURN NIL
//---------------------------------------------------------- ----
Este es el procedimiento para modificar o dar de alta el socio
CLASS TFrmSociEdi FROM TForm
COMPONENT oBrwGrupo <- Declaro el browse que
mostrara a los
integrantes del grupo
COMPONENT oMemGrupo <- Declaro el TMemDataSet
METHOD FormInitialize( oSender ) <- Creo el TMemDataSet
METHOD btnGrupoAddClick( oSender ) <- Agrego a los
integrantes del grupo
...
...
ENDCLASS
//---------------------------------------------------------- ----
METHOD FormInitialize( oSender ) CLASS TFrmSociEdi
// Genero la estructura del Browse - Grupos
WITH OBJECT ::oMemGrupo
:GetStructFrom( { { "GRU_SDG", "C", 07, 0 } ,;
{ "SOC_NOM", "C", 60, 0 } } )
:lOpen := .T.
END WITH
// Recogo todos los Integrantes del Grupo
WITH OBJECT ::oDbfGrupo
:OrdSetFocus( "GRU_GRU" )
IF !::lOnAppend .and. :Seek( ::oSoc_Id:Value )
::oDbfSoc:SaveState( .T. )
::oDbfSoc:OrdSetFocus( "CLAVE" )
DO WHILE ::oSoc_Id:Value == :Gru_Soc .and. !:Eof()
WITH OBJECT ::oMemGrupo
:Append()
IF ::oDbfSoc:Seek( ::oDbfGrupo:Gru_Sdg )
::oMemGrupo:Soc_Nom := ::oDbfSoc:Soc_Nom
ENDIF
:SaveFrom( ::oDbfGrupo )
END WITH
:Skip()
ENDDO
::oDbfSoc:RestoreState( .T. )
ENDIF
END WITH
::oMemGrupo:GoTop()
::oBrwGrupo:Refresh( .T. )
::oBrwGrupo:BookMark( 1 )
RETURN Nil
//---------------------------------------------------------- ----
METHOD btnGrupoAddClick( oSender ) CLASS TFrmSociEdi
WITH OBJECT TFrmGrupos():New( Self )
:cText := "Alta de grupos"
:cSocio_Id := ::oSoc_Id:Value
::oMemGrupo:AddNew()
:RequestState()
IF :ShowModal() == mrOK
::oMemGrupo:Soc_Nom := :oName_SocGrupal:Value
::oMemGrupo:Update()
::lGrupoChanged := .T. <- En este punto, dentro
del inspector de
objectos puedo ver
::RequestState() que el "TMemDataSet"
oMemGrupo contiene
informacion, pero
ELSE al regresar al
Metodo "MantenAlta"
desde donde fue
llamado
::oMemGrupo:Cancel() este ya va vacio.
ENDIF
:End()
END WITH
RETURN Nil
//---------------------------------------------------------- ----
Agradecere cualquier ayuda que puedan darme.
para desarrollar una aplicación.
Estoy utilizando un TMemDataSet para mostrar y capturar los integrantes del
grupo que comanda un socio. todo funciona bien miestras se esta capturando
la información, pero al momento de grabar los datos el objecto "TMemDataSet"
se encuentra vacio cuando este ya contenia información. les muestro parte
del codigo a ver quien puede decirme por donde va los tiros.
Este es mi browse que muestra los socios registrados.
//---------------------------------------------------------- ----
CLASS TFrmSocios FROM TFormFolder
METHOD SaveGrupo( oMemGrupo )
METHOD MantenAlta( oSender )
...
...
ENDCLASS
//---------------------------------------------------------- ----
METHOD MantenAlta( oSender ) CLASS TFrmSocios
WITH OBJECT TFrmSociEdi() <- Aqui llamo al procedimiento de
altas o modificaciones
:lOnAppend := .T.
:New( Application:oMainForm )
...
...
:RequestState()
IF :ShowModal() == mrOK
IF :lGrupoChanged
::SaveGrupo( :oMemGrupo ) <- Regresa vacio ":oMemGrupo"
ENDIF
ELSE
::oDbfSocios:Cancel()
ENDIF
END WITH
RETURN NIL
//---------------------------------------------------------- ----
Este es el procedimiento para modificar o dar de alta el socio
CLASS TFrmSociEdi FROM TForm
COMPONENT oBrwGrupo <- Declaro el browse que
mostrara a los
integrantes del grupo
COMPONENT oMemGrupo <- Declaro el TMemDataSet
METHOD FormInitialize( oSender ) <- Creo el TMemDataSet
METHOD btnGrupoAddClick( oSender ) <- Agrego a los
integrantes del grupo
...
...
ENDCLASS
//---------------------------------------------------------- ----
METHOD FormInitialize( oSender ) CLASS TFrmSociEdi
// Genero la estructura del Browse - Grupos
WITH OBJECT ::oMemGrupo
:GetStructFrom( { { "GRU_SDG", "C", 07, 0 } ,;
{ "SOC_NOM", "C", 60, 0 } } )
:lOpen := .T.
END WITH
// Recogo todos los Integrantes del Grupo
WITH OBJECT ::oDbfGrupo
:OrdSetFocus( "GRU_GRU" )
IF !::lOnAppend .and. :Seek( ::oSoc_Id:Value )
::oDbfSoc:SaveState( .T. )
::oDbfSoc:OrdSetFocus( "CLAVE" )
DO WHILE ::oSoc_Id:Value == :Gru_Soc .and. !:Eof()
WITH OBJECT ::oMemGrupo
:Append()
IF ::oDbfSoc:Seek( ::oDbfGrupo:Gru_Sdg )
::oMemGrupo:Soc_Nom := ::oDbfSoc:Soc_Nom
ENDIF
:SaveFrom( ::oDbfGrupo )
END WITH
:Skip()
ENDDO
::oDbfSoc:RestoreState( .T. )
ENDIF
END WITH
::oMemGrupo:GoTop()
::oBrwGrupo:Refresh( .T. )
::oBrwGrupo:BookMark( 1 )
RETURN Nil
//---------------------------------------------------------- ----
METHOD btnGrupoAddClick( oSender ) CLASS TFrmSociEdi
WITH OBJECT TFrmGrupos():New( Self )
:cText := "Alta de grupos"
:cSocio_Id := ::oSoc_Id:Value
::oMemGrupo:AddNew()
:RequestState()
IF :ShowModal() == mrOK
::oMemGrupo:Soc_Nom := :oName_SocGrupal:Value
::oMemGrupo:Update()
::lGrupoChanged := .T. <- En este punto, dentro
del inspector de
objectos puedo ver
::RequestState() que el "TMemDataSet"
oMemGrupo contiene
informacion, pero
ELSE al regresar al
Metodo "MantenAlta"
desde donde fue
llamado
::oMemGrupo:Cancel() este ya va vacio.
ENDIF
:End()
END WITH
RETURN Nil
//---------------------------------------------------------- ----
Agradecere cualquier ayuda que puedan darme.