| dalla versione 6.5.2680 - modificato il 26/03/2014 - link - english
|
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.
|
Note
- 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à.
event Prodotto.OnGetSmartLookup(
inout Recordset RecordSet
inout int Level
inout boolean NullValue
inout boolean Skip
inout boolean Cancel
IDDocument CallerDocument
)
{
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
Fornitori
where
Fornitori.NomeSocieta Like Percent +c NomeProdotto +c Percent
order by
NomeProdotto
RecordSet.CopyFrom(
SourceRS := rs
)
}
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
Fornitori
where
Fornitori.Paese Like Percent +c NomeProdotto +c Percent
order by
NomeProdotto
RecordSet.CopyFrom(
SourceRS := rs
)
}
if Level = C7
{
Cancel := True
}
}
Cosa ne pensi?
Ti sono rimaste delle domande su punti che questo articolo non ha trattato? Pensi che sia utile aggiungere una nota all'articolo? Aiutaci a migliorare la documentazione di Instant Developer scrivendo il tuo commento nei campi qui sotto.