Chiave di join non si trova nel set di record

di il
4 risposte

Chiave di join non si trova nel set di record

Ciao a tutti, sono un novizio di access alle prese con un problema che per molti di voi probabilmente apparirà banale...

Sto cercando di creare per impratichirmi un database di gestione spettacoli per il mio ente che gestisce vari teatri e come primo step ho creato 3 tabelle: Compagnia/artista (contenente i campi denominazione e anagrafica varia), Teatro (contente denominazione e specifiche varie) e Spettacolo (contenente, fra i vari, il campo IDcompagnia e IDteatro).
Le ho messe in relazione così:

Compagnia/artista n->1 Spettacolo n->1 Teatro

poichè una compagnia può fare più spettacoli presso i nostri teatri ed un teatro può ospitare vari spettacoli.
Ho creato una query (che mostri i tutti campi della tabella Spettacolo + denominazione/Compagnia + denominazione/Teatro) con relativa maschera di inserimento dati in base a Spettacolo, in maniera tale che la denominazione della compagnia e la denominazione del teatro si possano scegliere tramite casella combinata.

E qui cominciano i problemi...
Una volta scelti i record dalle due caselle combinate se provo ad aggiungere dati negli altri campi Access mi dice "Impossibile aggiungere record. La chiave di join della tabella "Spettacolo" non si trova nel set di record"

Dove sta quindi l'errore? Forse nell'impostazione del database?
Spero di essermi spiegato bene...
Grazie dell'aiuto

4 Risposte

  • Re: Chiave di join non si trova nel set di record

    Fedevisi ha scritto:


    Compagnia/artista n->1 Spettacolo n->1 Teatro

    poichè una compagnia può fare più spettacoli presso i nostri teatri ed un teatro può ospitare vari spettacoli.
    Usiamo sempre i NomeTabella al plurale, quindi Artisti, Teatri, Spettacoli.
    Rispiego a parole mie:
    Spettacoli è tabella di congiunzione fra Artisti e Teatri. Quindi
    Artisti uno-a-molti Spettacoli
    Teatri uno-a-molti Spettacoli
    Giusto?

    Fedevisi ha scritto:


    Ho creato una query (che mostri i tutti campi della tabella Spettacolo + denominazione/Compagnia + denominazione/Teatro) con relativa maschera di inserimento dati in base a Spettacolo, in maniera tale che la denominazione della compagnia e la denominazione del teatro si possano scegliere tramite casella combinata.
    A che ti serve una query per inserire dati? Io penserei a una maschera che poggia su Spettacoli avente 2 caselle combinate IDArtista e IDTeatro. Quando un valore di IDArtista o IDTeatro non c'è occorre gestire l'evento "Non in elenco" (NotInList) con un opportuno codice VBA.
  • Re: Chiave di join non si trova nel set di record

    Rispiego a parole mie:
    Spettacoli è tabella di congiunzione fra Artisti e Teatri. Quindi
    Artisti uno-a-molti Spettacoli
    Teatri uno-a-molti Spettacoli
    Giusto?
    Esatto
    A che ti serve una query per inserire dati? Io penserei a una maschera che poggia su Spettacoli avente 2 caselle combinate IDArtista e IDTeatro. Quando un valore di IDArtista o IDTeatro non c'è occorre gestire l'evento "Non in elenco" (NotInList) con un opportuno codice VBA.
    Innanzitutto, grazie mille per la risposta!
    Ci avevo pensato ed avevo già provato... Li il problema era che una volta creata la casella combinata e scelto il record, ad esempio di un teatro, non mi risulta che venga salvato nel record di un dato spettacolo.
    A questo punto, sto forse sbagliando qualcosa nella creazione della casella combinata?
  • Re: Chiave di join non si trova nel set di record

    Fedevisi ha scritto:


    Una volta creata la casella combinata e scelto il record, ad esempio di un teatro, non mi risulta che venga salvato nel record di un dato spettacolo
    Impossibile per quello che ne so io.
    Stiamo parlando entrambi di una maschera che poggia su Spettacoli? Nel momento in cui sei posizionato sulla casella combinata IDTeatro, tu ne scegli uno. Questo fatto genera automaticamente un nuovo record. Dovrai poi anche compilare il corrispondente IDArtista, altrimenti la compilazione del record appare "monca".
    Se non ti piace l'idea di una maschera Spettacoli con 2 caselle combinate, suggerirei a una maschera/sottomaschera Teatri/Spettacoli. In questo caso nella sottomaschera Spettacoli dovrai solo selezionare gli IDArtista mentre IDTeatro verrà compilato automaticamente.
  • Re: Chiave di join non si trova nel set di record

    Smanettando un po' e anche grazie ai tuoi spunti ho capito la serie di errori stupidi che stavo facendo...
    Direi che ora posso andare avanti col progettino.

    Grazie Osvaldo!
Devi accedere o registrarti per scrivere nel forum
4 risposte