Forzare la rilettura di un record visualizzato

From SageDev KB
Jump to navigation Jump to search

Se si modifica dei valori di un record già aperto va ricaricato in schermata (spesso si fa tramite delle azioni scatenate da menu/pulsanti).

Nel caso non lo si faccia si può verificare o la perdita della modifica (perché viene riscritto il dato vecchio ancora presente in videata)

o esce il messaggio di errore "Obsolete record" (nel caso si cerchi di fare delle modifiche ed il sistema si accorge dell'incongruenza).


Esiste una variabile globale apposita: GSTALIT.

Eccone alcuni esempi d'uso:

$FIN_ACTION
Case REPONSE
 When GSTALIT : Gosub RELIT From GOBJSUB : SUIZON="CODACE"
Endcase

Dentro $FERME o $FIN

#Se si arriva da un tunnel si imposta mkstat in modo che forzi la rilettura al ritorno dal tunnel stesso
If GFONC1 = "GESSQH" 
   mkstat=GSTALIT 
Endif


Subprog CL_BTN(VALEUR)
Variable Char    VALEUR()
  # Per forzare la rilettura dopo l'esecuzione dell'azione Click
  mkstat = GSTALIT
End



Un modo artigianale per ricaricare il record dopo un'azione ad esempio di un bottone è questo:

  1. inizializzare una variabile globale in coda all'azione: Global Char YGRELIT
  2. nell'azione AVANT_CHOI, testare la presenza della variabile ed eseguire Gosub RELIT from GOBJSUB
$AVANT_CHOI
  #Rilettura del record
  If dim(YGRELIT) > 0 Then
    Kill YGRELIT
    Gosub RELIT From GOBJSUB
  Endif
Return