Facendo assistenza tecnica, ho notato che gli sviluppatori che stanno imparando ad usare Instant Developer si trovano quasi subito a dover risolvere il problema della decodifica dei dati.
Immaginiamo di dover realizzare la videata Prodotti e che sulla relativa tabella ci sia un campo IDCategoria che lega ogni prodotto alla sua categoria di appartenenza. Per mostrare i dati all’utente non possiamo limitarci all’ID perché troppo poco significativo: dobbiamo mostrare anche il NomeCategoria. Come fare per ottenere questo risultato?
Si potrebbe aggiungere una colonna alla query di caricamento, mettendo in join anche la tabella Categorie, ma i difetti di questa soluzione sono almeno due: il campo NomeCategoria non sarebbe usabile dall’utente per la modifica dei dati e il driver potrebbe avere da ridire nell’aggiornare una query con join. Instant Developer propone un meccanismo più interessante, nel quale oltre alla query principale della videata è possibile aggiungerne delle altre: le query di lista valori e le query di smart lookup.
Le query di lista valori permettono di decodificare il valore di un campo con una combo box, le cui righe vengono caricate dal database e inviate al client. È un meccanismo molto semplice, ma è necessario che la risposta del database sia rapida e con un numero di record relativamente piccolo per evitare rallentamenti, meno di 100 per intenderci.
Le smart lookup hanno un funzionamento diverso, perché inviano al client solo la decodifica del valore corrente e trasferiscono la lista completa solo quando l’utente apre la combo. In questo modo si ottiene una comunicazione più rapida. Inoltre, scrivendo direttamente nel campo è possibile minimizzare ulteriormente i dati inviati ed effettuare una vera e propria ricerca, ottenendo anche il meccanismo di auto completamento. Si potrebbe scrivere “con” nel campo di lookup per poter scegliere tra Condimenti e Confetture, come nell’immagine qui sopra.
Ricapitolando: per decodificare i valori di una piccola tabella anagrafica usate una query di lista valori, alternativamente usate una query di lookup. Se non l’avete già fatto, date un’occhiata al capitolo 4.3 della guida all’uso.
Buona decodifica.