English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Pannelli
  • Libreria Pannello
  • Validazione

On Updating Row

evento copia link

Condizioni di notifica

Questo evento viene notificato dal pannello durante la gestione di ogni risposta del server una volta per ogni campo del pannello se per tale campo è vera una delle seguenti condizioni:

  • Il campo appartiene ad una riga nuova in fase di inserimento.
  • Il campo era stato modificato dall'utente ma non è stato possibile validarne il contenuto, quindi attualmente risulta in stato di errore. In questo modo è possibile verificare se persiste ancora la condizione di errore.
  • La riga a cui il campo appartiene è in stato di errore e il campo risulta modificato.
  • Il campo è stato appena modificato dall'utente o dal programma.

Utilizzo consigliato

L'evento di OnUpdatingRow può essere utilizzato per validare i dati immessi dall'utente nel pannello. E' possibile infatti leggere i dati inseriti dall'utente dalla tabella IMDB sottesa al pannello, verificare i valori originari e gli ultimi valori validati; inoltre è possibile segnalare errori e warning tramite le funzioni SetErrorText o SetWarningText applicabili ai campi del pannello.
Questo evento può essere usato anche per modificare i dati presenti nella riga in fase di modifica, ad esempio per inizializzare i campi lasciati vuoti dall'utente.

Argomenti

Column E' un numero intero che indica per quale campo della riga l'evento è in fase di esecuzione. Occorre utilizzare la proprietà Me del campo di pannello per effettuare i confronti.
Field Modified E' un valore booleano che indica che il campo è veramente stato modificato, cioè il suo valore è diverso da quello originalmente letto dal database.
Field Was Modified Dalla versione 6.7.2900, questo argomento indica se il campo è stato modificato nell'ultima trasmissione del browser, ed è quindi utilizzabile per sapere quali campi sono stati effettivamente modificati nell'ultimo ciclo di comunicazione con il server.
Row Was Modified Non è consigliabile utilizzare questo argomento perchè è presente solo per compatibilità con vecchie versioni di Instant Developer.
Inserting E' un valore booleano che indica se la riga attuale è in fase di modifica (falso) o di inserimento (vero).
Cancel Non utilizzare questo argomento. Per segnalare una condizione di errore, utilizzare le funzioni SetErrorText del campo di pannello o del pannello stesso.

Esempio di codice

// *******************************************************
// Called when a field in a row has been changed by a user
// *******************************************************

event EventoPannello1.Prodotti.OnUpdatingRow(
  int Column // Column that has been changed.
  boolean FieldModified    // 
  boolean FieldWasModified // 
  boolean RowWasModified   // 
  boolean Inserting        // This parameter is TRUE if the row is a new row
  inout boolean Cancel     // 
)
{
  // Se sto validando il campo Nome Prodotto....
  if Column = Prodotti.NomeProdotto.Me()
  {
    // La lunghezza del nome del prodotto deve essere almeno 5 caratteri
    if Length(Prodotti.NomeProdotto) < C5
    {
      // Segnalo un errore, non sarà possibile salvare i dati nel database
      Prodotti.NomeProdotto.SetErrorText(MSG Nome Troppo Corto)
    }
  }
  // 
  // Se la scorta è nulla, la inizializzo a 10 unità

  if IsNull(Prodotti.Scorte)
  {
    Prodotti.Scorte := C10
  }
}
  • Il pannello esegue controlli e azioni in automatico: introduce eventuali valori di default se essi sono presenti nel database, oppure valida eventuali check constraints che siano stati definiti sul database, come ad esempio se un campo obbligatorio viene lasciato nullo, infine controlla l'esistenza dei codici inseriti nelle tabelle correlate tramite l'uso delle query di decodifica. Per questo tipo di controlli non è quindi necessario scrivere alcune codice.
  • Nel caso di pannelli Document Oriented, non è consigliabile l'uso di questo evento, ma si devono preferire gli eventi di validazione a livello di documento.
  • Questo evento può essere lanciato diverse volte nell'ambito della risposta del server al browser, per garantire che tutte le condizioni di notifica siano coperte. Per questo deve essere utilizzato in modalità stateless, e non dovrebbe contenere query o algoritmi complessi al suo interno.
  • I dati della riga per cui viene chiamato l'evento possono essere letti e scritti utilizzando la tabella IMDB sottesa al pannello. Se si modificano i dati, essi verranno resi subito disponibili al pannello.
  • Il valore precedente di un campo può essere ottenuto utilizzando la funzione del campo di pannello LastValue; il valore originario può essere ottenuto utilizzando la funzione OriginalValue. E' possibile usare il parametro Field Was Modified per sapere se il campo è stato modificato proprio nell'ultima comunicazione con il server.
  • Attenzione: se all'interno di questo evento vengono modificate le proprietà dinamiche dei campi di pannello, esse si comportano come all'interno dell'evento di OnDynamicProperties.

Ultima modifica: 06/04/2021 / Validità: da 6.5.2680

Vedi anche

  • Set Error Text (funzione)
  • Me (funzione)
  • On End Transaction (evento)
  • Last Value (funzione)
  • On Dynamic Properties (evento ricorrente)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum