Creazione del pannello righe/sconti Creazione del pannello righe/sconti
Creazione del pannello righe/sconti

In sintesi

Vediamo adesso come creare una struttura master detail che permette di editare un documento complesso.

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.
Video lezione

Vediamo ora come creare il pannello delle righe ordine. Innanzitutto Creiamo una tabbed view per aggiungere tutti i dettagli dell'ordine. Ora tiriamo sulla tabbed view la classe riga ordine e vediamo che viene aggiunto il pannello delle righe. L'icona del pannello ha un segno speciale che indica che il pannello delle righe è già stato collegato al pannello degli ordini con una relazione master-detail. Questo è stato possibile perché il documento ordine, collegato al pannello ordini contiene una collection di righe ordine e tale collection contiene proprio la stessa classe del pannello che stavamo creando. Notiamo anche che nella MQ del pannello detail non c'è alcuna where clause, che non è ammessa nei pannelli document oriented.Sistemiamo la videata e proviamo l'applicazione.

Possiamo notare che il comportamento di entrambi i pannelli è diverso dai pannelli sul database. Siccome entrambi i pannelli lavorano direttamente sullo stesso documento in memoria, noi, ad esempio, possiamo inserire le righe senza prima aver salvato la testata, oppure possiamo cancellare delle righe e annullare le modifiche al documento recuperando le righe cancellate. Nei pannelli sul database invece tutte le cancellazioni erano definitive. Inoltre notiamo che non dobbiamo più utilizzare nemmeno un evento per gestire compiutamente i master detail in quando il documento padre è in grado di "portare" in automatico i valori delle chiavi sui documenti figli. Infine notiamo che l'operazione di salvataggio salva il documento come un tutt'uno, all'interno della stessa transazione, quindi non ci dobbiamo preoccupare noi di coordinare il salvataggio dei pezzi di documento. Vedremo nelle prossime lezioni che prima di salvarlo avremo la possibilità di validarlo come un tutt'uno.

Creiamo il pannello degli sconti riga e utilizziamo il comando unlink master panel, perché vogliamo vedere come ricreare manualmente il comportamento master detail. Aggiugiamo allora l'evento OnChangeRow al pannello delle righe; in questo evento leggeremo il documento riga attualmente selezionato nel pannello delle righe, se non è nullo prendiamo la sua collection degli sconti è la colleghiamo al pannello degl sconti. Proviamo l'applicazione. Notiamo che questo modo di procedere non solo ci costringe a scrivere più codice, ma soprattutto da meno informazioni a Instant Developer perché non gli esplicita che i due pannelli sono in relazione master detail. Questo metodo è stato illustrato per far vedere come si accede al documento selezionato nei pannelli e come attaccare una collection ai documenti. Vediamo infine che per ripristinare la situazione precedente è sufficiente togliere l'evento di OnChangeRow e poi tirare il pannello master (le righe) sul detail (gli sconti) con il tasto SHIFT premuto per ripristinare la situazione.

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum

Scrivi una domanda e premi Invio per cercare nella documentazione online. Se non trovi risposte adeguate, potrai inviarla gratuitamente all’help desk.

Cerca