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

On Get Smart Lookup

evento link

Condizioni di notifica

Se in un pannello è contenuta una query di lookup in cui è stata attivata la funzione di Smart Lookup, allora l'evento di OnGetSmartLookup viene notificato al pannello durante la gestione della procedura di smart lookup, cioè quando l'utente scrive qualcosa nei campi di lookup e preme il tasto INVIO.

Utilizzo consigliato

Questo evento può essere utilizzato per modificare il comportamento standard della procedura di Smart Lookup, descritta nel seguito.

Argomenti

Recordset E' il recordset che occorre riempire se si personalizzano le query eseguite durante l'evento di Smart Lookup.
Level La procedura di Smart Lookup esegue più tentativi, allargando sempre più il campo di ricerca. Questo parametro intero indica il tentativo a cui si è arrivati.
Null Value Parametro di output booleano. Se lo si imposta a True, allora verrà ritornato il valore NULL (nessun risultato trovato) al pannello.
Skip Parametro di output booleano. Se lo si imposta a True allora non verranno eseguite le query standard per il livello attuale.
Cancel Parametro di output booleano. Se lo si imposta a True, allora la procedura di Smart Lookup verrà interrotta.
Field Index E' un numero intero che rappresenta il campo del pannello per cui viene eseguita questa query. Deve essere confrontato con la proprietà Me del campo di pannello.

Esempio di codice

// ****************************************************************************
// Evento chiamato per personalizzare la procedura di Smart Lookup a livello di
// pannello
// ****************************************************************************

event Prodotti.Prodotti.OnGetSmartLookup(
  Recordset Recordset     // E' il recordset che occorre riempire se si pe...
  int Level // La procedura di Smart Lookup esegue più tentativi, allargan...
  inout boolean NullValue // Parametro di output booleano. Se lo si impost...
  inout boolean Skip      // Parametro di output booleano. Se lo si impost...
  inout boolean Cancel    // Parametro di output booleano. Se lo si impost...
  int FieldIndex          // E' un numero intero che rappresenta il campo ...
)
{
  // Testiamo se l'indice del campo è corretto
  if (FieldIndex == Prodotti.NomeCategoria.me())
  {
    // Saltiamo il primo passaggio
    if (Level == 0)
    {
      Skip = true
      return
    }
    // 
    Gestione Recordset
    {
      Recordset rec = new() // 
      // 
      select into recordset (rec)
         Idcategoria as IDCATECATEGO
         NomeCategoria as NOMECATECATE
      from
         Categorie // master table
      // 
      Recordset.copyFrom(rec)
    }
  }
}
  • L'elenco dei livelli di ricerca è il seguente:
    Livello 0: vengono cercati i dati che corrispondono esattamente a quello che l'utente ha inserito, usando clausole AND se l'utente ha inserito dati in più campi.
    Livello 1: vengono cercati i dati che cominciano per quello che l'utente ha inserito, usando clausole AND se l'utente ha inserito dati in più campi..
    Livello 2: vengono cercati i dati che contengono quello che l'utente ha inserito, usando clausole AND se l'utente ha inserito dati in più campi.
    Livello 3: vengono cercati i dati che contengono quello che l'utente ha inserito, usando clausole OR se l'utente ha inserito dati in più campi.
    Livello 4: vengono cercati i dati che contengono quello che l'utente ha inserito, cercando in tutti i campi della query di lookup e usando clausole OR se l'utente hai inserito dati in più campi.
  • Impostando il parametro Skip a True verranno effettuati sempre nuovi tentativi, finchè non verrà impostato a True anche il parametro Cancel, oppure Null Value.
  • E' necessario usare la funzione CopyFrom dell'oggetto Recordset per copiare i dati nel recordset passato come parametro.
  • Per ottenere il corretto caricamento delle proprietà è necessario che i nomi fisici (DB Code) delle colonne del recordset siano corrispondenti ai nomi fisici (DB Code) delle colonne della query smartlookup definita a design-time.
  • Il recordset può essere aperto, ad esempio, con una istruzione di tipo Select Into Recordset oppure con la funzione SQLQuery dell'oggetto database.
  • FieldIndex va confrontato sempre con il primo campo della query di lookup, anche se una query ha associati più campi.

Ultima modifica: 02/11/2016 / Validità: da 9.5.4160

Vedi Anche

  • Copy From (procedura)
  • Recordset
  • SQL Query (funzione)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum