Que conviene mas (llamar a METHOD New()) o bien al definir la DATA ( DATA oProfesionalentidad INIT Profesionalentidad():New() ) inicializarla con la clase que quiero.
En realidad estoy teniendo algunos problemas y quiero ver si viene por ahí el tema.
Gracias.
#include "Xailer.ch"
//---------------------------------------------------------- --------------------
CLASS Entidadesturno From TComponent
METHOD DevolverPorID( ID )
METHOD Actualizar()
METHOD Agregar()
METHOD Eliminar()
METHOD CargarTipo(identidadturno)
PROPERTY identidadturno INIT 0
PROPERTY idpersonajsucursal INIT 0
PROPERTY codigo INIT ""
PROPERTY descripcion INIT ""
PROPERTY idtipoentidad INIT 0
DATA oProfesionalentidad INIT Profesionalentidad():New()
METHOD New()
ENDCLASS
//---------------------------------------------------------- --------------------
METHOD New() CLASS Entidadesturno
::oProfesionalentidad := Profesionalentidad():New( Self )
RETURN Self
//---------------------------------------------------------- --------------------
METHOD DevolverPorID( ID ) CLASS Entidadesturno
local ret:=.F.
local hArray:=AppData:oSql:QH( "select idpersonajsucursal,codigo,descripcion from Entidadesturno where identidadturno="+str(ID) )
IF len(hArray)>0
::identidadturno := ID
::idpersonajsucursal := hArray['idpersonajsucursal']
::codigo := hArray['codigo']
::descripcion := hArray['descripcion']
::CargarTipo(::identidadturno)
ret := .t.
ELSE
::New()
::CargarTipo(::identidadturno)
AppData:oSql:cError:="El registro ya no existe en la base de datos."
ENDIF
RETURN ret
--
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Pregunta sobre clases y el método New()
- Carlos Ortiz
- Mensajes: 873
- Registrado: Mié Jul 01, 2009 5:44 pm
- Ubicación: Argentina - Córdoba
- Contactar:
Pregunta sobre clases y el método New()
Carlos,
como norma general, en la cláusula INIT de las propiedades sólo se
pueden utilizar constantes, esto es, números, cadenas, valores lógicos o
fechas. Pero nunca se debe llamar a funciones (y mucho menos instanciar
objetos) porque te va a dar problemas de todo tipo.
Hay ocasiones en las que se podría hacer, pero a no ser que tengas muy
muy muy claro lo que ocurre por debajo, en las tripas del motor de
objetos, mejor que ni lo intentes.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
como norma general, en la cláusula INIT de las propiedades sólo se
pueden utilizar constantes, esto es, números, cadenas, valores lógicos o
fechas. Pero nunca se debe llamar a funciones (y mucho menos instanciar
objetos) porque te va a dar problemas de todo tipo.
Hay ocasiones en las que se podría hacer, pero a no ser que tengas muy
muy muy claro lo que ocurre por debajo, en las tripas del motor de
objetos, mejor que ni lo intentes.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
- Carlos Ortiz
- Mensajes: 873
- Registrado: Mié Jul 01, 2009 5:44 pm
- Ubicación: Argentina - Córdoba
- Contactar:
Pregunta sobre clases y el método New()
Entendido y gracias!
Hacerlo en el New() sería correcto?, necesito instanciar otras clases.
#include "Xailer.ch"
//---------------------------------------------------------- --------------------
CLASS Entidadesturno From TComponent
METHOD DevolverPorID( ID )
METHOD Actualizar()
METHOD Agregar()
METHOD Eliminar()
METHOD CargarTipo(identidadturno)
PROPERTY identidadturno INIT 0
PROPERTY idpersonajsucursal INIT 0
PROPERTY codigo INIT ""
PROPERTY descripcion INIT ""
PROPERTY idtipoentidad INIT 0
DATA oProfesionalentidad INIT NIL
METHOD New()
ENDCLASS
//---------------------------------------------------------- --------------------
METHOD New() CLASS Entidadesturno
::oProfesionalentidad := Profesionalentidad():New( Self )
// CREO QUE TENDRí‰ QUE REPETIR ESTO AQUI ENTONCES PARA CUANDO
DEVOLVERPORID RETORNE FALSO?
::identidadturno := 0
::idpersonajsucursal := 0
::codigo := ''
::descripcion := ''
RETURN Self
//---------------------------------------------------------- --------------------
METHOD DevolverPorID( ID ) CLASS Entidadesturno
local ret:=.F.
local hArray:=AppData:oSql:QH( "select idpersonajsucursal,codigo,descripcion from Entidadesturno where identidadturno="+str(ID) )
IF len(hArray)>0
::identidadturno := ID
::idpersonajsucursal := hArray['idpersonajsucursal']
::codigo := hArray['codigo']
::descripcion := hArray['descripcion']
ret := .t.
ELSE
::New()
AppData:oSql:cError:="El registro ya no existe en la base de datos."
ENDIF
::CargarTipo(::identidadturno)
RETURN ret
--
Hacerlo en el New() sería correcto?, necesito instanciar otras clases.
#include "Xailer.ch"
//---------------------------------------------------------- --------------------
CLASS Entidadesturno From TComponent
METHOD DevolverPorID( ID )
METHOD Actualizar()
METHOD Agregar()
METHOD Eliminar()
METHOD CargarTipo(identidadturno)
PROPERTY identidadturno INIT 0
PROPERTY idpersonajsucursal INIT 0
PROPERTY codigo INIT ""
PROPERTY descripcion INIT ""
PROPERTY idtipoentidad INIT 0
DATA oProfesionalentidad INIT NIL
METHOD New()
ENDCLASS
//---------------------------------------------------------- --------------------
METHOD New() CLASS Entidadesturno
::oProfesionalentidad := Profesionalentidad():New( Self )
// CREO QUE TENDRí‰ QUE REPETIR ESTO AQUI ENTONCES PARA CUANDO
DEVOLVERPORID RETORNE FALSO?
::identidadturno := 0
::idpersonajsucursal := 0
::codigo := ''
::descripcion := ''
RETURN Self
//---------------------------------------------------------- --------------------
METHOD DevolverPorID( ID ) CLASS Entidadesturno
local ret:=.F.
local hArray:=AppData:oSql:QH( "select idpersonajsucursal,codigo,descripcion from Entidadesturno where identidadturno="+str(ID) )
IF len(hArray)>0
::identidadturno := ID
::idpersonajsucursal := hArray['idpersonajsucursal']
::codigo := hArray['codigo']
::descripcion := hArray['descripcion']
ret := .t.
ELSE
::New()
AppData:oSql:cError:="El registro ya no existe en la base de datos."
ENDIF
::CargarTipo(::identidadturno)
RETURN ret
--
@dbfarma
www.dbfarma.com.ar
www.dbfarma.com.ar