| dalla versione 6.5.2680 - modificato il 28/01/2011 - link - english
|
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.
|
Note
-
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.
event EventoPannello1.Prodotti.OnUpdatingRow(
int Column
boolean FieldModified
boolean FieldWasModified
boolean RowWasModified
boolean Inserting
inout boolean Cancel
)
{
if Column = Prodotti.NomeProdotto.Me()
{
if Length(Prodotti.NomeProdotto) < C5
{
Prodotti.NomeProdotto.SetErrorText(MSG Nome Troppo Corto)
}
}
if IsNull(Prodotti.Scorte)
{
Prodotti.Scorte := C10
}
}
Cosa ne pensi?
Ti sono rimaste delle domande su punti che questo articolo non ha trattato? Pensi che sia utile aggiungere una nota all'articolo? Aiutaci a migliorare la documentazione di Instant Developer scrivendo il tuo commento nei campi qui sotto.