In sintesi
In questa lezione vedremo come è possibile utilizzare i documenti per ottenere funzionalità di lookup, smart lookup e value source per la gestione dei campi con combo box.
Nota: questo video corso è stato realizzato con la versione 4 di Instant Developer. Anche se i contenuti sono ancora attuali e sono utili per imparare ad utilizzare Instant Developer, alcune affermazioni sono di fatto superate. Per i dettagli e le ultime novità sulle funzionalità illustrate vi rimandiamo alla sezione di reference che viene tenuta aggiornata giornalmente.
In questa lezione vedremo come è possibile utilizzare i documenti per ottenere funzionalità di lookup, smart lookup e value source per la gestione dei campi con combo box (autolookup).
Abbiamo visto nelle lezioni precedenti che quando Instant Developer crea un pannello a partire da un documento cerca di creare i lookup utilizzando ancora dei documenti, se le relative tabelle base sono già state mappate in classi. Se non ci riesce, allora utilizza un normale lookup su database, ma si lamenta. Quando un pannello utilizza un lookup su documento, la query di lookup non è una vera query SQL, ma rappresenta il modo con cui il pannello chiamerà le funzioni relative alla gestione dei lookup. Se il pannello ha un lookup su documento, innanzitutto si crea in automatico un instanza del documento su cui fare il lookup; quando deve eseguire il lookup, allora valorizza le proprietà dei documento di lookup relative alle clasuole where della query di lookup, chiede al documento di eseguire il lookup, poi recupera dal documento le proprietà relative alle colonne della query. Ricordiamo che le clausole where possono essere relative a campi del pannello attuale, campi di altri pannelli o campi IMDB, costanti o variabili globali.
Per personalizzare il funzionamento del lookup, possiamo utilizzare i metodi Before Lookup o After Lookup del documento. Con il primo possiamo gestire noi in autonomia il lookup, con il secondo, possiamo completare il lavoro fatto dal framework. Ad esempio, vediamo che il lookup degli impiegati mostra come decodifica il cognome dell'impiegato. Immaginiamo poi che in tutta l'applicazione ci siano un centinaio di lookup verso gli impiegati e che si dedica di mostrare anche il nome. Se il lookup fosse sul database dovremmo andare un tutte le cento query a modificare l'espressione della colonna, con i documenti basta aggiungere un opportuno evento di After Lookup. Proviamo il funzionamento.
L'evento On Get Value Source viene lanciato dal framework, quando, con un meccanismo simile al precedente è necessario eseguire la query che dovrà riempire i valori della combo box di un campo. Se si vuole personalizzare il funzionamento occorre impostare a TRUE il parametro skip e riempire il recordset passato come parametro con le funzioni Add Value Source Row o Copy From per copiarlo da un altro recordset che avremo riempito con una nostra query. Ad esempio convertiamo in autolookup il nome del dipendente, poi usiamo l'evento per fare vedere sia il nome che il cognome. Proviamo l'applicazione.
Infine l'evento On Get Smart Lookup viene usato per gestire la fase di ricerca di lookup editabili. Il parametro Recordset è quello che dobbiamo riempire con i valori trovati sul database, il livello (da 1 a 5) ci indica a quale stadio della ricerca siamo arrivati, il parametro nullvalue dovrà essere impostato a true per indicare che non esistono dati in corrispodenza a quanto cercato dall'utente, i parametri skip e cancel permettono rispettivamente di passare al livello successivo o di interrompere la ricerca. Un esempio di uso di questo evento verrà fornito nella lezione riepilogativa.