Condizioni di notifica
Questo evento viene notificato dal pannello quando avviene un errore di database durante il salvataggio dei dati del pannello. Dalla versione 6.9 viene lanciato anche quando in un pannello document oriented il documento o la collection non possono essere salvati.
Utilizzo consigliato
L'evento di OnDatabaseError può essere utilizzato per effettuare una gestione personalizzata degli errori a livello di database. Può essere utile nel caso in cui la validazione dei dati sia stata implementata a livello di database (trigger e stored procedure) e nel tal caso si debba gestire in maniera personalizzata l'errore ritornato dal database.
Argomenti
Cancel | Se impostato a False continua ad aggiornare i record, altrimenti interrompe l'aggiornamento. |
Skip | Se impostato a True non mostra la schermata di errore standard di Instant Developer. |
Error Number | Numero identificativo dell'errore: in Java è l'errore nativo del database mentre in C# è l'errore ADO. |
Error Message | Messaggio di errore ritornato dal database. |
Native Error Number | Codice di errore restituito dal database. Nel caso di applicazioni Java coincide con il parametro Error Number ma nel caso di applicazioni C# rappresenta il codice di errore nativo come ricevuto dal database e non filtrato dal driver .NET. |
Panel Operation | E' un numero intero che identifica il tipo di operazione che ha causato l'errore. Vedi anche la lista valori PanelOperation. |
Document | E' il documento che non è stato salvato se l'evento viene lanciato da un pannello document oriented. E' pari a Null Object negli altri casi. |
Esempio di codice
// ************************************************************
// Fired when a database error occurs during a commit operation
// ************************************************************
event DettagliOrdini.DettagliOrdini.OnDatabaseError(
inout boolean Cancel //
inout boolean Skip //
int ErrorNumber // Error number as returned from driver
int NativeErrorNumber // Error number as returned from database
string ErrorMessage // Error message as returned from database
int PanelOperation // See Panel Operation Value List
)
{
// Non voglio l'errore standard...
Skip := True
//
// ma uso una message box!
EsempiAM.MessageBox(MSG Stato Possibile +c ErrorMessage)
}
// Fired when a database error occurs during a commit operation
// ************************************************************
event DettagliOrdini.DettagliOrdini.OnDatabaseError(
inout boolean Cancel //
inout boolean Skip //
int ErrorNumber // Error number as returned from driver
int NativeErrorNumber // Error number as returned from database
string ErrorMessage // Error message as returned from database
int PanelOperation // See Panel Operation Value List
)
{
// Non voglio l'errore standard...
Skip := True
//
// ma uso una message box!
EsempiAM.MessageBox(MSG Stato Possibile +c ErrorMessage)
}
- Quando questo evento viene lanciato a partire da un documento, gli errori non vengono passati come parametri ma si trovano attaccati al documento. E' possibile anche utilizzare la nuova funzione GetFailedConstraint del documento per sapere maggiori informazioni sull'errore.
- In applicazioni Java i parametri ErrorNumber e NativeErrorNumber hanno sempre lo stesso valore mentre in applicazioni C# il primo parametro è il codice di errore restituito dal driver mentre il secondo parametro corrisponde al codice di errore fornito dal database. Il secondo codice di errore dipende, quindi, dal tipo di database utilizzato ma permette di riconoscere esattamente il tipo di errore che ha causato la notifica dell'evento. Il driver .NET, infatti, fornisce lo stesso codice di errore per diversi errori del database e non è sempre chiaro quale sia la causa reale del problema.
- Il parametro Document è stato inserito in versione 6.9.
- Il parametro Native Error Number è stato inserito in versione 8.0.3560.
Ultima modifica: 22/09/2021 / Validità: da 8.0.3560