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
/* -------------------------------------------------------------------------------------------
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
/*
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
/*
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 ] )
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Adolfo and 80 guests