TArrayBrowse - Refrescar
Publicado: Mié May 12, 2010 12:46 am
Amigos,
Estoy trabajando con un TArrayBrowse el cual lo cargo con data y luego
tiene un Timer para realizar un refresco de data.
Este es parte del codigo para refrescar:
// El oSender es un TArrayBrowse, CSQL es una cadena con instrucciones SQL
para cargar la info
METHOD ChequeaData2(oSender,cSQL) CLASS frmservicios
Local aData ,aArray
Local nClave,i,lOrden
aData := AppData:oDataSource:QueryArray(cSQL)
aArray:= oSender:aArrayData
// Primero Elimino los que ya no quiero mostrar
FOR EACH i IN aArray
nClave:= aArray[HB_ENUMINDEX(),1]
IF AScan( aData, {| o | o[1]=nClave } ) == 0
Logdebug(ToString(nClave))
oSender:DelRow()
lOrden:=.T.
ENDIF
NEXT
// Luego Agrego los nuevos
FOR EACH i IN aData
nClave:= aData[HB_ENUMINDEX(),1]
IF AScan( aArray, {| o | o[1]=nClave } ) == 0
oSender:AddRow( {aData[HB_ENUMINDEX(),1],
aData[HB_ENUMINDEX(),2],aData[HB_ENUMINDEX(),3],aData[HB_ENU MINDEX(),4],aData[HB_ENUMINDEX(),5],aData[HB_ENUMINDEX(),6]}
)
lOrden:=.T.
ENDIF
NEXT
aArray:= oSender:aArrayData
if lOrden==.T.
oSender:aArrayData := Asort( aArray,,, {|x,y| dtoc(x[ 3 ])+x[ 4 ] >
dtoc(y[ 3 ])+y[ 4 ] } )
endif
oSender:Refresh( .F. )
RETURN Nil
El problema es que cuando elimino un array que ya no quiero mostra, este
entra en bucle, la pregunta es, cuando elimino un item del TArrayBrowser,
este se refleja en el array que lo tengo como copia?
Espero me halla echo entender.
FG
Estoy trabajando con un TArrayBrowse el cual lo cargo con data y luego
tiene un Timer para realizar un refresco de data.
Este es parte del codigo para refrescar:
// El oSender es un TArrayBrowse, CSQL es una cadena con instrucciones SQL
para cargar la info
METHOD ChequeaData2(oSender,cSQL) CLASS frmservicios
Local aData ,aArray
Local nClave,i,lOrden
aData := AppData:oDataSource:QueryArray(cSQL)
aArray:= oSender:aArrayData
// Primero Elimino los que ya no quiero mostrar
FOR EACH i IN aArray
nClave:= aArray[HB_ENUMINDEX(),1]
IF AScan( aData, {| o | o[1]=nClave } ) == 0
Logdebug(ToString(nClave))
oSender:DelRow()
lOrden:=.T.
ENDIF
NEXT
// Luego Agrego los nuevos
FOR EACH i IN aData
nClave:= aData[HB_ENUMINDEX(),1]
IF AScan( aArray, {| o | o[1]=nClave } ) == 0
oSender:AddRow( {aData[HB_ENUMINDEX(),1],
aData[HB_ENUMINDEX(),2],aData[HB_ENUMINDEX(),3],aData[HB_ENU MINDEX(),4],aData[HB_ENUMINDEX(),5],aData[HB_ENUMINDEX(),6]}
)
lOrden:=.T.
ENDIF
NEXT
aArray:= oSender:aArrayData
if lOrden==.T.
oSender:aArrayData := Asort( aArray,,, {|x,y| dtoc(x[ 3 ])+x[ 4 ] >
dtoc(y[ 3 ])+y[ 4 ] } )
endif
oSender:Refresh( .F. )
RETURN Nil
El problema es que cuando elimino un array que ya no quiero mostra, este
entra en bucle, la pregunta es, cuando elimino un item del TArrayBrowser,
este se refleja en el array que lo tengo como copia?
Espero me halla echo entender.
FG