Nella costruzione del database della musica, mi trovo a dover gestire il dialogo fra diversi livelli di maschere, per cui pubblico lo schema di dialogo tra le varie maschere dove:
1) Le maschere segnate da un rettangolo a sfondo blu, sono quelle legate al percorso principale di inserimento dati relativi all’album e sono
legate a tabelle con relazioni 1 a molti
2) Le maschere segnate da un rettangolo a sfondo giallo sono le maschere incorporate come sottomaschere all’interno di una specifica maschera
di inserimento dati
3) Le maschere segnate da un rettangolo a sfondo verde sono le maschere richiamate da più livelli delle maschere di inserimento dati album
4) Le maschere segnate da un rettangolo a sfondo rosso sono le maschere che inseriscono dati su tabelle esterne e che sono richiamate da eventi “NOT IN LIST” dalle altre maschere
5) Le frecce di colore blu indicano che la chiamata tramite le due maschere connesse avviene tramite un pulsante di comando
Il rapporto tra i vari livelli di inserimento dati è:
L’Album (come elemento di Discografia) ha:
a. Almeno 2 immagini correlate [richiamo inserimento immagini]
b. Una o più edizioni [richiamo inserimento edizioni album]
c. Una formazione che lo ha eseguito [richiamo inserimento formazione]
d. Uno staff tecnico che lo ha prodotto [richiamo inserimento staff tecnico]
Ogni edizione:
a. Ha un elenco che definisce le quantità per ogni singolo tipo di disco o di oggetto contenuto [inserimento dati nella sottomaschera contenuto]
b. Ha uno o più dischi che ne fanno parte [richiamo inserimento Dischi]
c. Può avere uno o più oggetti che ne fanno parte [richiamo inserimento Oggetti (possibile solo se nell’elenco della sottomaschera contenuto sono presenti elementi di tipo “Oggetto”)]
d. Può avere una o più immagini che differiscono dalle immagini dell’album
e. Può avere una formazione diversa dalla formazione dell’album
f. Può avere uno staff tecnico diverso dallo staff tecnico dell’album
Ogni Disco
a. Ha una propria scaletta [sottomaschera scaletta disco]
b. Può avere Immagini diverse dall’edizione [richiamo inserimento immagini]
c. Può avere una propria formazione [richiamo inserimento formazione]
d. Può avere un proprio staff Tecnico [richiamo inserimento staff tecnico]
Ogni elemento della scaletta
a. Può avere propri dettagli [richiamo dettagli canzone]
b. Può avere una propria formazione [richiamo inserimento formazione]
c. Può avere un elenco di autori delle musiche e dei testi [richiamo inserimento autori musiche/testi]
Il funzionamento che mi serve creare è il seguente
1) Ogni maschera aperta tramite evento NOT IN LIST deve poter inserire un solo record, ovvero quello il cui nuovo dato è stato inserito nella combo box della maschera chiamante, dopo di che deve ritornare alla maschera chiamante posizionandosi sul controllo successivo della maschera chiamante rispetto a quello che ha scatenato l’evento NOT IN LIST
2) La maschera “Dettaglio Canzoni”, una volta richiamata, deve poter inserire un solo record, relativo al record che si sta inserendo sulla sottomaschera “Scaletta Disco” della maschera “Disco” e poi ritornarci posizionandosi sul controllo successivo della sottomaschera
3) Ogni volta che una maschera di livello più basso chiama un’altra maschera di livello più alto tramite un pulsante di comando:
a. Se è la prima volta che la maschera chiamante chiama un’altra maschera, la maschera chiamante deve consolidare i dati all’interno del database
b. La maschera chiamata deve essere in grado di inserire più record per ogni chiamata che riceve
4) Ogni volta che una maschera di livello più alto ritorna ad una maschera di livello più basso deve:
a. Consolidare nel database i dati del record di cui si stavano inserendo i dati nel momento in cui si è attivato il ritorno alla maschera di livello più basso
b. posizionarsi sullo stesso record su cui si trovava la maschera di livello più basso e, in particolare, sul controllo successivo a quello che è stato premuto che scatenare la chiamata originale alla maschera di livello più alto.
Inoltre, per quanto riguarda gli inserimenti dei dati:
Dati come livelli di inserimento:
Livello 00: Album
Livello 01: Edizioni Album
Livello 02: Contenuto(02a); Dischi(02b); Oggetti(02c)
Livello 03: Elementi di Scaletta
Livello 04: Dettaglio Canzone; Autori Musiche / Testi
Livello 10: Formazione; Immagini; Staff Tecnico
1) Il livello 00 deve poter sempre essere inserito, indipendentemente dalla presenza di record di livelli più alti correlati presenti
2) Il livello 01 deve poter essere inserito solo se esiste un record di livello 00 correlato, ma indipendentemente dalla presenza o meno di record di livello più alto correlati
3) Il livello 02 deve poter essere inserito solo se esistono sia il record di livello 00, che il record di livello 01 tenendo presente che:
a. I livelli 02a e 02b devono poter essere inseriti per qualunque record di livello 01 esistente
b. Il livello 02c deve poter essere inserito, solo se esiste almeno un record di livello 02a che contenga dati relativi ad elementi di tipo “oggetto”
4) Il livello 03 deve poter essere inserito solo se esistono record correlati di livello 00, 01 e 02b
5) Il livello 04 deve poter essere inserito solo se esistono record correlati di livello 00, 01, 02a, 02b 03
6) Il livello 10 deve poter essere inserito solo se esiste almeno un record correlato tra i record di livello 00, 01, 02b e 03
7) In tutti i casi l'inserimento di un determinato livello dati non deve dipendere dalla presenza di record correlati a lui di dati di livello più alto
Vista questa logica, nel database esistono maschere di elenco per Album, Edizioni Album, Dischi, Oggetti e Elementi Scaletta, in modo da far sì che, se durante l’inserimento di record di un determinato livello, non sono stati inseriti tutti i record correlati dei livelli più alti, posizionandosi su un record di una delle maschere elenco e dando un comando di “Modifica Dati”, si può aprire la maschera di inserimento dati relativa alla maschera elenco che si era attivata e riprendere l’immissione dati da dove la si era lasciata.
A questo punto le mie domande sulla gestione delle maschere sono le seguenti:
1) Quando sto inserendo i dati in una maschera di inserimento, qual è il momento in cui access consolida automaticamente i dati del record che sto modificando nel database?
2) Nella mia struttura, se non chiudo mai alcuna maschera, rischio di trovarmi aperte 7 od 8 maschere in contemporanea, mentre vorrei cercare di averne effettivamente visibili un massimo di 2. Per raggiungere questo obiettivo è meglio gestire il fatto tenendo comunque tutte le maschere aperte e rendendo visibili solo quelle che sono effettivamente al lavoro, oppure lasciare aperte solo le maschere su cui sto lavorando in quel momento? [esempio di questa seconda alternativa sono in "Maschera Album", ho inserito i dati relativi e seleziono il comando "Inserisci Edizione", si apre la maschera "Edizioni Album" dopo di che, nell'inserire un dato dell'edizione, scateno un evento not in list (per esempio sul tipo parametro) per cui si va a chiudere momentaneamente la "maschera Album" e si apre la "maschera Parametro"] Il mio dubbio in questo caso è: che conseguenze ha la chiusura di una maschera sui dati che sono stati inseriti all'interno della medesima? Poi che parametro si usa per rendere visibile o invisibile un'intera maschera?
3) Nell'inserimento dati relativi ad un album, esistono diverse situazioni in cui si passa da una maschera ad un'altra per poi tornare alla maschera chiamante [Esempio sono nella maschera "Edizioni Album", attivo la funzione "Inserisci Immagini" e, siccome è la prima volta che richiamo una maschera di livello più alto, ho bisogno del consolidamento del record di edizione che stavo inserendo nel database. Inserisco le immagini dopodiché ritorno alla maschera "Edizioni Album", da cui attivo il comando "Inserisci Disco" che richiama la maschera "Dischi" per poi, una volta inseriti tutti i dischi, tornare alla maschera "Edizioni Album"] A questo punto la domanda è: la maschera "Edizioni Album" ha mantenuto la possibilità, una volta superato l'ultimo controllo presente su di essa, di passare all'inserimento del record successivo?
4) È possibile dire ad una maschera (in questo caso l'idea era su quelle maschere che venivano aperte dallo scatenarsi di un evento NOT IN LIST) di salvare automaticamente i dati nel database una volta superato l'ultimo controllo presente sulla maschera e poi, invece di passare alla schermata di inserimento del record successivo, di chiudere la maschera e tornare a lavorare sulla maschera che ha scatenato l'evento NOT IN LIST in questione? Se sì, come?
Grazie per l'attenzione e buona giornata.