Buenas tardes.
Compañeros, declaro una DATA en mi clases con el comando __objAddData( Self, "oRs" + oTable:cFile ),
Como puedo (dentro del mismo method donde la declaro) hacer referencia a ella (ya como data de la clase) ?
Muchas Gracias
Referencia a una data
-
- Posts: 768
- Joined: Sun Jun 15, 2008 7:47 pm
- Location: Sevilla
- Been thanked: 5 times
- Contact:
Re: Referencia a una data
Hola Ricardo.
Tu data está basada en una variable con el nombre formado por "oRs" + oTable:cFile
Eso es complicado de trata directamente el el método pero para ello tendrías que usar macros.
Por otro lado me aventuro a afirmar sin ver todo el código que estás creando data a la clase y no al objeto. Con eso quiero decir que si defines otro objeto de la clase tendrá incluidas todas las datas.
Para poder ayudarte tendrías que poner más código!!!
Tu data está basada en una variable con el nombre formado por "oRs" + oTable:cFile
Eso es complicado de trata directamente el el método pero para ello tendrías que usar macros.
Por otro lado me aventuro a afirmar sin ver todo el código que estás creando data a la clase y no al objeto. Con eso quiero decir que si defines otro objeto de la clase tendrá incluidas todas las datas.
Para poder ayudarte tendrías que poner más código!!!
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
Re: Referencia a una data
Gracias xmanuel, a ver si me doy a entender:
EN MI PRG
y En la clase
Desde el PRG (declarado arriba)
EN MI PRG
Code: Select all | Expand
/* -------------------------------------------------------------------------------------------
Gestión de pedidos desde whatsapp o excel
------------------------------------------------------------------------------------------- */
FUNCTION CXC_Pedidosw()
LOCAL mPedidos
DEFINE MAINT mPedidos MASTER TEncdoc() ;
Select "select * from encdoc where numtran = 105 order by folio desc" ;
DESCRIPTION "Pedidos de WhatsApp" ;
SCREEN Captura(mPedidos) BARRA {||MantBarra(mPedidos)} FROMCODE
ADD TABLE TProductos() TO mPedidos //Llama al metodo Addtable de la clase TMAINT
ADD TABLE TItemDoc() SELECT "select * from itemdoc where numtran = 105 " TO mPedidos //Llama al metodo Addtable de la clase TMAINT
ACTIVATE MAINT mPedidos AL BUSCAR { |nKey| TeclaCual( nKey, mPedidos ) } ;
ON INIT { || mPedidos:oMaster:aTField[09]:cHeader:="Fecha;Entrega",;
mPedidos:oMaster:aTField[09]:lInList:=.T.}
//AL BUSCAR { |nKey| Filtro(mPedidos,nKey) }
//
mPedidos:END()
RETURN NIL
STATIC FUNCTION CAPTURA(m)
Código de catptura de datos que se define en el SCREEN Captura(mPedidos) y se activa en el ACTIVATE (de arriba)
//Dentro de esta funcion, si puedo hacer lo siguiente:
oRsItemdoc := m:oConn:Query("select * from itemdoc where numtran = 105")
//Pero quiero hacerlo desde la clase, cuando entre al ADDTABLE
//CON EL
ADD TABLE TItemDoc() SELECT "select * from itemdoc where numtran = 105 " TO mPedidos
//DEL DEFINE DEL MANTENIMIENTO
RETURN nil
y En la clase
Code: Select all | Expand
/*
Genero la DATA en TMAINT
*/
METHOD AddTable( oTable, cSelect ) CLASS TMaint
LOCAL o, n:=0
FAIL IF TYPE oTable NOT A TTABLEMY DESCR "El objeto oTable no es del tipo requerido. " + CRLF + "Funcion: " + ProcName()
DEFAULT cSelect TO ''
Aadd( ::aTables, oTable) //TTableMy():New(oTable:cFile, oTable:cDescrip, oTable:cFldInc, oTable:bInicio) )
//Agrego una DATA OBJECT "TABLA", en el mantenimiento actual
__objAddData( Self, "ors" + oTable:cFile )
//Con este codigo le puedo "poner" el objeto tabla ??? O como puedo hacerlo ???
__objSendMsg( Self, "oRs" + oTable:cFile, oSys:oConn:Query( cSelect ) )
Return NIL
Desde el PRG (declarado arriba)
-
- Posts: 768
- Joined: Sun Jun 15, 2008 7:47 pm
- Location: Sevilla
- Been thanked: 5 times
- Contact:
Re: Referencia a una data
Creo que ya te entiendo!!!
En vez de esto:
__objSendMsg( Self, "oRs" + oTable:cFile, oSys:oConn:Query( cSelect ) )
pon esto
__objSendMsg( Self, "_oRs" + oTable:cFile, oSys:oConn:Query( cSelect ) )
En vez de esto:
__objSendMsg( Self, "oRs" + oTable:cFile, oSys:oConn:Query( cSelect ) )
pon esto
__objSendMsg( Self, "_oRs" + oTable:cFile, oSys:oConn:Query( cSelect ) )
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
Re: Referencia a una data
Lo solucione de la siguiente manera
Muchas gracias.
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Code: Select all | Expand
/*
Genero la DATA en TMAINT
*/
METHOD AddTable( oTable, cSelect ) CLASS TMaint
LOCAL o, n:=0
FAIL IF TYPE oTable NOT A TTABLEMY DESCR "El objeto oTable no es del tipo requerido. " + CRLF + "Funcion: " + ProcName()
DEFAULT cSelect TO ''
Aadd( ::aTables, oTable) //TTableMy():New(oTable:cFile, oTable:cDescrip, oTable:cFldInc, oTable:bInicio) )
//Agregon una DATA OBJECT "TABLA", en el mantenimiento actual
__objAddData( Self, "ors" + oTable:cFile )
IF !Empty(cSelect) //Si el select no es vacio entonces
o:=::GetTable(oTable) //Busco el objeto oTABLE enviado, en el ARRAY aTables de esta clase
o := oSys:oConn:Query( cSelect ) //Le asigno el query a ese objeto
__objSendMsg( Self, "oRs" + oTable:cFile, o ) //Le asigono el objeto TABLE que me regresa el QUERY de TMYSQL
//y listo, ya tengo en la DATA oRSXXXX, la tabla que requiero
ENDIF
Return NIL
/* -----------------------------------------------------
Method GetTable(oT)
Regresa un objeto tabla del tMaint, para su uso
------------------------------------------------------*/
METHOD GetTable( oTable ) CLASS TMaint
local aTables:=::aTables,nTable:=0
FAIL IF TYPE oTable NOT A TTABLEMY DESCR "El objeto oTable no es del tipo requerido. " + CRLF + "Funcion: " + ProcName()
nTable:=Ascan( ::atables, {|t| t:cFile == oTable:cfile } )
// ?ntable,"ntable"
// ?aTables[ntable]:cfile,"del ascan"
RETURN iif( nTable == 0, NIL, ::aTables[ nTable ] )
Muchas gracias.
![Very Happy :D](./images/smilies/icon_biggrin.gif)
![Very Happy :D](./images/smilies/icon_biggrin.gif)