English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Pannelli
  • Libreria Pannello
  • Eventi SQL

Before Insert

evento copia link

Condizioni di notifica

Durante il ciclo di salvataggio dei dati, per ogni nuova riga inserita dall'utente viene notificato l'evento di BeforeInsert prima che i dati vengano inseriti nel database. Dopo l'inserimento viene notificato l'evento di AfterInsert.

Utilizzo consigliato

L'evento di BeforeInsert può essere utilizzato per:

  • Modificare i dati che verranno inseriti nel database, impostando i valori nella tabella IMDB sottesa al pannello.
  • Utilizzare una propria procedura di salvataggio al posto di quella standard impostando il parametro Cancel a True.
  • Saltare l'inserimento di una determinata riga impostando il parametro Cancel a True.
  • Preparare l'inserimento della riga eseguendo delle operazioni preliminari. E' possibile leggere la tabella IMDB sottesa al pannello per sapere quali sono i dati in fase di aggiornamento.

Argomenti

Cancel Se impostato a True non effettua l'inserimento dei dati di questa riga. La fase di salvataggio delle altre righe prosegue normalmente.

Esempio di codice

// *************************************************
// Fired before an INSERT operation is performed.
// You can change the IMDB panel fields to modify
// the values that will be inserted in the database.
// *************************************************

event DettagliOrdini.DettagliOrdini.BeforeInsert(
  inout boolean Cancel // When set to TRUE, abort operation
)
{
  // Se il prezzo unitario è zero...
  if NullValue(DettagliOrdini.PrezzoUnitarioDettagliOrdini, ZERO) = ZERO
  {
    currency PrezzoUnitarioProdotto = 0 // 
    // 
    // Lo leggo dal database dei prodotti...

    select into variables
      set PrezzoUnitarioProdotto := PrezzoUnitario
    from
      Prodotti // Master Table
    where
      Id = DettagliOrdini.IdProdottoProdotto
    // 
    // E poi lo uso come dato da salvare.

    DettagliOrdini.PrezzoUnitarioDettagliOrdini := PrezzoUnitarioProdotto
  }
}
  • Normalmente questo evento non deve essere utilizzato per effettuare le validazioni: è meglio usare gli eventi OnUpdatingRow e BeforeCommit per questo.
  • Nei pannelli basati su documenti, la gestione del ciclo di salvataggio deve essere eseguita tramite gli eventi del documento e non del pannello.
  • Attenzione: Non utilizzare all'interno di questo evento funzioni che modificano il set di dati come RefreshQuery o UpdateData perchè possono creare malfunzionamenti o cicli infiniti.
  • >
  • Questo evento scatta anche se il pannello registra i dati su una tabella in memoria o su un documento.

Ultima modifica: 23/03/2021 / Validità: da 6.5.2680

Vedi Anche

  • Before Commit (evento)
  • After Insert (evento)
  • On Updating Row (evento)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum