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

Before Find

evento copia link

Condizioni di notifica

Questo evento viene notificato dal pannello prima di eseguire una operazione di recupero dati. Questo può avvenire nelle seguenti condizioni:

  • L'utente usa il bottone Find Data (F3) della toolbar del pannello.
  • Il programma invia il comando FindData al pannello.
  • Cambiano i valori del database IMDB da cui dipende la master query del pannello. Ad esempio, in una struttura Master Detail viene selezionato un diverso record master e il pannello Detail si deve aggiornare.
  • Se il pannello ha come stato iniziale DATA oppure SET VALUES AND FIND, all'apertura della videata viene eseguita la query e notificato l'evento.
  • L'utente usa il comando Insert (+, F7), mentre il pannello è in stato QBE (inserimento criteri di ricerca).
  • Il programma esegue il comando InsertRow ed il pannello si trova in stato QBE (inserimento criteri di ricerca).
  • Il programma attacca al pannello un nuovo documento (utilizzando la proprietà Document).
  • Il programma attacca al pannello un nuova collection (utilizzando la proprietà Collection).
  • In una struttura master detail document oriented, il pannello detail deve mostrare una diversa collection perchè è cambiato il documento master a cui esso è collegato.

Utilizzo consigliato

L'evento BeforeFind può essere usato per:

  • Impostare le prorietà QBEFilter dei campi del pannello, modificando così i criteri di filtro dei dati.
  • Verificare che ci siano le condizioni per eseguire la query di recupero dati ed eventualmente cancellare l'operazione impostando il parametro Cancel a True.
  • Eseguire in autonomia il recupero dei dati, impostando il parametro Cancel a True e poi comunicando al pannello i dati tramite la proprietà Recordset o Collection.
  • Recuperare i criteri di ricerca impostati dall'utente leggendo le proprietà QBEFilter dei campi del pannello.

Argomenti

Cancel Se impostato a TRUE, impedisce che venga eseguita la query di recupero dati. In questo caso il pannello rimane nello stato precedente a meno che non vengano eseguite ulteriori operazioni (ad es. impostazione del Recordset o della proprietà Collection).

Esempio di codice

// ****************************************************************************
// Fired before a SELECT operation. You can change panel QBE Filters to change
// the SELECT result set.
// ****************************************************************************

event DettagliOrdini.DettagliOrdini.BeforeFind(
  inout boolean Cancel // When set to TRUE, abort selection
)
{
  // Se non è stato inserito un criterio sull'ordine o sul prodotto...
  if DettagliOrdini.Idordine.QBEFilter = Empty String AND DettagliOrd-
    ini.IdProdotto.QBEFilter = Empty String
  {
    // Non consento la ricerca
    Cancel := True
    EsempiAM.MessageBox(Indicare Ordine o Prodotto)
  }
}
  • Se all'interno di questo evento vengono create le condizioni per la notifica di questo evento, è possibile che il pannello entri in uno stato di loop infinito (ad esempio impostando la proprietà Collection che, a sua volta, chiama l'evento di BeforeFind). In questo caso è necessario utilizzare delle variabili di semaforo per evitare il ciclo infinito.
  • Durante questo evento non è consigliabile utilizzare i valori della tabella IMDB sottesa per conoscere il valore dei campi del pannello, ma la proprietà QBEFilter.

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

Vedi Anche

  • After Find (evento)
  • Recordset (proprietà)
  • QBE Filter (proprietà)
  • Document (proprietà)
  • Collection (proprietà)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum