Tengo un problema y no se como puedo solucionarlos....
Tengo un Listbox de una bases de dato filtrada y estoy realizando un refresh() actualizando la visualizacion, el tema que cuando desde otra terminal me agrega un registro desde el Listbox que tengo en ejecuacion NO se actualiza el Index por lo que cuando hago la actualiuzacion muestra cualquier cosa, en principio "creo" que es logico ya que la base de dato se actualiza pero el index NO.
Se puede actualizar el Index miestras esté abierto dentro de un Listbox??
esero haber sido claro
paso como tengo armado mi aplicacion...
- Code: Select all Expand view
- ...
..
.
DBSELECTAREA( PRESUPU )
@ 0.875, 1 LISTBOX oLbxPRESU ;
FIELDS Transform((PRESUPU)->SOL_NRO,'9999999999') ,;
Transform((PRESUPU)->PRE_NRO,'9999999999') ,;
(PRESUPU)->NOMB ,;
StatusPresupuesto((PRESUPU)->CANCSPR) ,;
(PERAUTO)->NOMBRE ,;
str((PRESUPU)->CANCSPR,2) ;
HEADERS 'Sol.Cotizacion' ,;
'Presupuesto',;
'Cliente',;
'Status' ,;
'Usuario Actual:' ,;
' ' ;
SELECT 'USUACTU' FOR mRESP TO mRESP ;
on change ( xRecno := (PRESUPU)->(RECNO()) ,;
If((PRESUPU)->PRE_NRO<>0,;
(oBTN2:DISABLE(),oBTN5:ENABLE() ) ,;
(oBTN2:ENABLE() ,oBTN5:DISABLE())) ,;
oLbxPRESU:nClrPane:={||If((PRESUPU)->URGENCI==1,;
CLR_HCYAN,;
CLR_HGRAY ) } ) ;
FIELDSIZES 70,70,180,250,180,40 ;
SIZE 290,145 ;
of oDlgCar
oLbxPRESU:nLineStyle = 1
oLbxPRESU:SetFilter( 'USUACTU' ,mRESP ,mRESP )
oLbxPRESU:GoTop()
oLbxPRESU:Refresh()
oBTN1:ENABLE() // Nueva SP
If (PRESUPU)->PRE_NRO <> 0 .and. !(PRESUPU)->(eof())
oBTN2:ENABLE() // Mofid.Anular SP
Else
oBTN2:DISABLE() // Mofid.Anular SP
EndIf
If AccePRESU .and. (PRESUPU)->PRE_NRO <> 0
oBTN3:ENABLE() // PRESUPUESTO
Else
oBTN3:DISABLE() // PRESUPUESTO
EndIf
ACTIVATE DIALOG oDlgCar CENTERED ;
ON INIT (ActuaLista(oLbxPRESU,PRESUPU,mRESP,oDlgCar),;
oLbxPRESU:SetFocus())
dbcloseall()
return .t.
FUNCTION ActuaLista(oLbx , base , mRESP , oDlg)
DEFINE TIMER oTmr INTERVAL 10000 ;
ACTION ((base)->(dbgoto(xRecno)) ,; // oLbx:Upstable(),;
oDlg:Update() ) ;
of oDlg
ACTIVATE TIMER oTmr
RETURN .t.
EXIT PROC Salir()
// esto se ejecuta al salir, normal o cuelgue
// y verificas si es un Obj es que no se elimino, asi que le das ::END()
if valtype(oTmr) == "O"
oTmr:End() ; oTmr := NIL
endif
return NIL