Forzare la rilettura di un record visualizzato

From SageDev KB
Revision as of 13:05, 3 July 2019 by SageDev (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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