In sintesi
In questa lezione vediamo come utilizzare tabelle IMDB multi-riga in query.
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 vediamo come utilizzare tabelle IMDB multi-riga in query.
Nel corso dello sviluppo di un'applicazione Client possiamo utilizzare sia query su tabelle del database sia query su tabelle IMDB. Possiamo creare query su IMDB allo stesso modo in cui lo faremmo su tabelle del database. Proviamo, per esempio, a creare un'istruzione di Update su tabella IMDB in una procedura.
Creiamo una nuova tabella IMDB tirando la tabella Prodotti sull'applicazione Client e cambiamone la cardinalità per modificare la tabella IMDB in una multi-riga. Poi creiamo una nuova procedura e tiriamo la tabella IMDB sul corpo della procedura. In questo modo viene automaticamente aggiunto uno statement di update sulla tabella IMDB.
Supponiamo di voler impostare a 0 la Scorta di tutti i prodotti se questi sono sospesi. Allora andiamo sulla tabella e selezioniamo il campo Scorta e gli assegnamo il valore ZERO. Poi selezioniamo la clausola where per selezionare i soli prodotti sospesi. Vediamo il codice che è stato prodotto. Come vediamo l'istruzione di Update è stata scritta in una procedura a parte la quale gira su tutti i records della tabella IMDB e quando il campo Sospeso è uguale a True (-1) allora viene impostato a 0 il campo Scorta. La query su tabelle IMDB, infatti, viene eseguita dal client e non dal database server.
In aggiunta alle query già viste nelle lezioni precedenti (Update, Delete, Insert, Select into Variables e Select into Recordset) possiamo anche utilizzare una variante della query Insert/Select che permette, per così dire, lo scambio di dati tabelle IMDB - tabelle del database e viceversa.
Possiamo infatti: selezionare dei records dalla tabella IMDB multi-riga e inserirli in una tabella del database o selezionare records da una tabella del database ed inserirli nella tabella IMDB multi-riga.
Proviamo a caricare tutti i prodotti nella tabella IMDB all'avvio dell'applicazione. Nell'evento di On Initialize prendiamo tutti i prodotti non sospesi dalla tabella Prodotti del database e li inseriamo nella tabella IMDB multi-riga che abbiamo creato. Tiriamo la tabella IMDB sul body dell'evento indicando che vogliamo una Insert/Select. Per fare questo dobbiamo premere i tasti CONTROL e SHIFT contemporaneamente, come suggerito dalla status bar. Ora indichiamo la sorgente dei dati. Tiriamo la tabella Prodotti sul token from premendo i tasti SHIFT e CONTROL (in questo modo aggiungeremo anche tutte le assegnazioni ai campi corrispondenti tra le due tabelle).
Poi componiamo la clausola Where. Vogliamo solo i prodotti non sospesi. Questa query inserisce nella tabella IMDB tutti i prodotti non sospesi caricandoli dalla tabella del database.
Vediamo ora quali sono i limiti nelle query su tabelle IMDB. Non possiamo utilizzare né Distinct né Union. Non è possibile utilizzare Sub-Query né Value Source e quindi non possiamo utilizzare l'operatore IN o NOT-IN nelle clausole Where o nelle espressioni.