Creazione maschere collegate multiple

di il
6 risposte

Creazione maschere collegate multiple

Buongiorno. Gestisco da 20 anni almeno un database access rudimentale per tenere in ordine la mia grande passione: il cinema ed in particolar modo le filmografie registi. Quando ho creato con pochissime o quasi nulle nozioni di access l’ho fatto in maniera molto semplice. Due tabelle:

  1. Registi con campi ID, nome e cognome, nazionalità, anno di nascita
  2. Film con campo ID, titolo, Id regista, voto personale, voto critica

Ho applicato integrità referenziale 1 a infinito tra id tabella 1 e Id regista in tabella 2.

Ho creato varie maschere basate su query che mi tirano fuori varie informazioni (ad esempio una che mi tira fuori una classifica di tutti i registi inseriti per media voto film visti) e un pannello comandi che fa da sommario.

Attualmente popolo il database da una di queste maschere ed in particolar modo da una maschera di collegamento  (per comodità la chiamiamo maschera1)  tra tabella 1 e tabella 2 creata in automatico da access che mostra in alto i dati del regista (provenienti da tabella 1) e nella parte bassa l’elenco dei film di ogni regista con tutti i dati disponibili (provenienti da tabella 2). Da questa maschera inserisco sia i nuovi registi che via via conosco con la relativa filmografia sia inserisco per i registi già presenti i nuovi film che via via vengono prodotti.


Ora dopo 20 anni il numero di registi è cresciuto enormemente quindi la vecchia linearità del db mi soddisfa meno per cui ho pensato a soli scopi di consultazione di dividere i registi per qualche categoria. Restando ai campi attualmente disponibili della tabella1 e a titolo di esempio potrei pensare di dividerli per nazionalità.

Quindi mi piacerebbe continuare ad utilizzare la vecchia maschera 1 per continuare a popolare le due tabelle originarie con i nuovi registi e i nuovi film. Però mi piacerebbe creare una maschera di consultazione del tutto uguale a maschera1 solo che mi visualizza solo i registi italiani…e poi una uguale che mi mostra solo i registi americani, un’ altra solo quelli giapponesi e così via…


Ora avendo disponibile il campo nazionalità nella tabella registi  ho pensato che la cosa fosse semplice semplice. Faccio una query per nazionalità e mi tiro fuori i registi di una sola nazione (ad esempio queryItalia per i registi italiani). Applico integrità referenziale tra la queryItalia così ottenuta e la vecchia tabella 2 creo maschera di collegamento ed il gioco è fatto.

Invece no perché la relazione che mi crea access non è una ad infinito per cui la maschera registi italiani che vorrei creare del tutto uguale a quella di popolamento ma che mi permette di consultare solo i registi italiani non funziona. Cosa c’è che non va nella mia idea di funzionamento?

Visto che non ho nozioni reali di programmazione db vi viene in mente qualcosa per risolvere il mio problema anche seguendo una strada diversa rispetto a quella da me pensata?


Ovviamente vi ho proposto una categorizzazione per nazionalità di registi solo a titolo di esempio in realtà una volta risolta la problematica proporrei aggiungendo nuovi campi alla tabella registi delle categorizzazioni per me più interessanti …che ne so? I grandi registi classici di Hollywood, i maestri del neorealismo ecc ecc…


Mi scuso ovviamente in anticipo se dal punto di vista della programmazione ho commesso o ho scritto qualche “sfondone”…. :)


Saluti e buona domenica a tutti  

6 Risposte

  • Re: Creazione maschere collegate multiple

    Sarà il testo troppo prolisso… ma a dire il vero non ho ben compreso la tua richiesta. Ad ogni modo la struttura del db va quasi bene, nel senso che inserirei un indice anche per le nazioni così come già stato fatto per i registi.

  • Re: Creazione maschere collegate multiple

    Aggiungi i campi necessari e utilizzi una combo per filtrare in base ai nuovi campi.

    Male che vada usi il wizard…

  • Re: Creazione maschere collegate multiple

    Da quello che ho capito la struttura del database va bene per le tue esigenze.

    Quindi non capisco perchè hai bisogno di fare altre tipi di relazioni. In realtà vanno bene quelle che hai già impostato. E' solo un problema di visualizzazione dei dati.

    Se hai bisogno di visualizzarli in maniera diversa, devi semplicemente creare una nuova maschera e come fonte dati della maschera, invece di utilizzare una tabella, usi una query parametrica che ti estrae di volta in volta i dati che ti interessano.

    Inoltre, nelle query, se hai bisogno di relazioni diverse, puoi anche modificare le relazioni.
    Una operazione del genere è un caso raro, visto che se hai collegato bene gli ID tra le tabelle, vanno bene quelli, ma volendo, puoi anche creare relazioni diverse in ogni singola query, indifferentemente da quelle che hai creato globalmente nella pagina delle relazioni.

    Da chiarire poi, che se le relazioni di base non sono giuste, oppure le modifichi a livello di query, i dati risulteranno in sola lettura e non potrai modificare o aggiungere dati. Ma questo significa che c'è qualcosa di sbagliato nella realizzazione della struttura, che in presenza di integrità referenziale non permette ad access di aggiungere in modo coerente i dati tra le varie tabelle.
    E se togli l'integrità referenziale, puoi modificare i dati, ma rischi record orfani oppure dati null in alcuni campi delle tabelle collegate.

    Tra parentesi, puoi continuare ad usare solo la maschera 1, passandogli la where condition, cioè aprendola solo con i registi italiani, giapponesi, tedeschi o di altra nazionalità.

    Ti basta anche applicare un filtro alla maschera, senza dovere modificare nulla o creare altre maschere.

  • Re: Creazione maschere collegate multiple

    04/02/2024 - thelord74 ha scritto:


    Però mi piacerebbe creare una maschera di consultazione del tutto uguale a maschera1 solo che mi visualizza solo i registi italiani…e poi una uguale che mi mostra solo i registi americani, un’ altra solo quelli giapponesi e così via…

    Aggiungi un filtro ad una combo (tutti, italiani, stranieri) al variare della scelta imposti il filtro non devi cambiare nulla.

    Così come filtri per l'uno o l'altro regista filtri per l'una o l'altra nazionalità.

  • Re: Creazione maschere collegate multiple

    Mi associo agli altri nel dire che la struttura è corretta.

    Consigli per rendere più fluida la discussione nel forum “tecnico”:
    1. Nomina i cami ID sempre esplicitamente, ossia IDRegista, IDFilm (anche per le chiavi primarie)
    2. Invece di parlarci di maschera1, maschera2, dài i nomi propri relativi. Si può dare lo stesso nome delle relative tabelle sottostanti.

    Io chiamerei il campo Nazionalità, IDNazione. Quindi creo una tabella Nazioni con i campi IDNazione, Nazione. Poi la relazione Nazioni.IDNazione uno-a-molti Registi.IDNazione.>
    Per tutte le tue richieste…si tratta di impostare apposite query caso per caso…oppure una query parametrica dove scegli di volta in volta la Nazione preferita.

  • Re: Creazione maschere collegate multiple

    04/02/2024 - fratac ha scritto:


    Se hai bisogno di visualizzarli in maniera diversa, devi semplicemente creare una nuova maschera e come fonte dati della maschera, invece di utilizzare una tabella, usi una query parametrica che ti estrae di volta in volta i dati che ti interessano.

    In effetti ho risolto nella maniera più semplice possibile …basandomi su questo suggerimento ricevuto…certe volte (ovviamente quando non hai nessuna nozione) si cercano soluzioni assurde quando invece il passo corretto da fare è semplice ed a portata di mano ….comunque vi ringrazio di tutti gli altri suggerimenti che mi potrebbero tornare utili in caso decidessi di implementare altri aspetti….

Devi accedere o registrarti per scrivere nel forum
6 risposte