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
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.
TArrayBrowse - Refrescar
-
- Mensajes: 56
- Registrado: Jue Ene 08, 2009 5:40 pm
-
- Mensajes: 420
- Registrado: Sab Ago 16, 2008 9:06 pm
TArrayBrowse - Refrescar
Fredy,
Creo recordar que no están sincronizados.
Te recomiendo poner tus datos en un TMemDataset y despues asignarlo en
un TDBBrowse, así se sincronizan bastante bien.
Saludos
Jose Alfonso Suarez Moreno
El 12/05/2010 0:46, Fredy Gonzales escribió:
> 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
>
>
Creo recordar que no están sincronizados.
Te recomiendo poner tus datos en un TMemDataset y despues asignarlo en
un TDBBrowse, así se sincronizan bastante bien.
Saludos
Jose Alfonso Suarez Moreno
El 12/05/2010 0:46, Fredy Gonzales escribió:
> 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
>
>
-
- Mensajes: 56
- Registrado: Jue Ene 08, 2009 5:40 pm
TArrayBrowse - Refrescar
Gracias,
Voy a revisar lo de TMenDataSet, quizas los moleste por algunos detalles
mas.
Gracias.
FG
"José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
mensaje news:4bea5609$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Fredy,
>
> Creo recordar que no están sincronizados.
>
> Te recomiendo poner tus datos en un TMemDataset y despues asignarlo en un
> TDBBrowse, así se sincronizan bastante bien.
>
> Saludos
>
> Jose Alfonso Suarez Moreno
>
>
>
>
> El 12/05/2010 0:46, Fredy Gonzales escribió:
>> 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
>>
>>
>
Voy a revisar lo de TMenDataSet, quizas los moleste por algunos detalles
mas.
Gracias.
FG
"José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> escribió en el
mensaje news:4bea5609$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Fredy,
>
> Creo recordar que no están sincronizados.
>
> Te recomiendo poner tus datos en un TMemDataset y despues asignarlo en un
> TDBBrowse, así se sincronizan bastante bien.
>
> Saludos
>
> Jose Alfonso Suarez Moreno
>
>
>
>
> El 12/05/2010 0:46, Fredy Gonzales escribió:
>> 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
>>
>>
>