English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Document Orientation
  • ID Document
  • Interfaccia Utente
  • Gestione Lookup

On Get Smart Lookup

evento link

Condizioni di notifica

Se in un pannello è contenuta una query di lookup basata su documenti in cui è stata attivata la funzione di Smart Lookup, allora l'evento di OnGetSmartLookup viene notificato al documento 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 uscita booleano. Se lo si imposta a True, allora la procedura di Smart Lookup verrà interrotta.
Caller Document E' il documento per cui viene lanciata la procedura di smart lookup. Può essere nullo.

Esempio di codice

// ******************************************************************
// Fired by the framework when a Smart Lookup procedure is in effect.
// ******************************************************************

event Prodotto.OnGetSmartLookup(
  inout Recordset RecordSet // Recordset returned to the Smart Lookup search engine
  inout int Level           // Try Level
  inout boolean NullValue   // Set to TRUE to return a null value
  inout boolean Skip        // Set to TRUE to skip normal processing
  inout boolean Cancel      // Set to TRUE to cancel further processing
  IDDocument CallerDocument // The document that needs the smart lookup procedure
)
{
  // Dopo i quattro tentativi standard,
  // controllo per fornitore

  if Level = C5
  {
    Recordset rs = new() // 
    // 
    Skip := True
    // 
    select into recordset distinct (rs)
      Prodotti.Id as IdProdotto(IDPRODOTTO)
      C[ +c Fornitori.NomeSocieta +c C] +c Space +c Prodotti.NomeProdotto as NomeProdotto(
         NOMEPRODOTTO)
    from
      Prodotti  // Master Table
      Fornitori // Joined with Prodotti using FK FornitoriProdotti
    where
      Fornitori.NomeSocieta Like Percent +c NomeProdotto +c Percent
    order by
      NomeProdotto
    // 
    RecordSet.CopyFrom(
      SourceRS := rs
    )
  }
  // 
  // ora controllo per paese fornitore

  if Level = C6
  {
    Recordset rs = new() // 
    // 
    Skip := True
    // 
    select into recordset distinct (rs)
      Prodotti.Id as IdProdotto(IDPRODOTTO)
      C[ +c Fornitori.NomeSocieta +c C] +c Space +c Prodotti.NomeProdotto as NomeProdotto(
         NOMEPRODOTTO)
    from
      Prodotti  // Master Table
      Fornitori // Joined with Prodotti using FK FornitoriProdotti
    where
      Fornitori.Paese Like Percent +c NomeProdotto +c Percent
    order by
      NomeProdotto
    // 
    RecordSet.CopyFrom(
      SourceRS := rs
    )
  }
  // 
  if Level = C7
  {
    Cancel := True
  }
}

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

  • Durante la gestione dell'evento, le proprietà valorizzate del documento indicano i dati che l'utente ha introdotto e gli eventuali filtri specificati nella query di lookup del pannello.
  • 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 hai 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 hai 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 hai 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 hai inserito dati in più campi.
    Livello 4: vengono cercati i dati che contengono quello che l'utente ha inserito, cercando in tutte le proprietà del documento e usando clausole OR se l'utente hai inserito dati in più campi. In questo livello non vengono prese in considerazione le proprietà di tipo testo qualora la loro massima lunghezza sia inferiore a 5 caratteri.
  • 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' conveniente 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) e l'ordine delle colonne del recordset siano corrispondenti ai nomi fisici (DB Code) e all'ordine delle proprietà del documento da caricare.
  • Il recordset può essere aperto, ad esempio, con una istruzione di tipo Select Into Recordset oppure con la funzione SQLQuery dell'oggetto database.
  • E' possibile associare tramite D&D una proprietà del documento con la colonna della query Select Into Recordset in modo da garantire automaticamente che i nomi corrispondano. E' anche possibile tirare il documento sulla query per associare in automatico le proprietà.

Vedi Anche

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

Ti serve altro aiuto?

Consulta il Forum