Problema maschera inserimento dati

di
Anonimizzato13211
il
10 risposte

Problema maschera inserimento dati

Buongiorno a tutti,
sono una neofita di Access che ha deciso di crearsi in autonomia un minuscolo DB per gestire i dati degli studenti che seguo.
Ci sono praticamente riuscita se non per un piccolo problema che non riesco proprio a risolvere e spero che qualcuno possa aiutarmi perchè ci sto perdendo giornate intere e su forum, manuali etc. non riesco proprio a trovare risposta...(magari sono tonta:).
In breve ho due tabelle una Studenti con i dati anagrafici e una Lezioni con gli argomenti affrontati e alcuni dettagli in merito.
Ho creato una query che mi restituisce solo le lezioni di un singolo studente.
Ho creato una maschera con i dati dello studente contenente una sottomaschera con la query, in modo da vedere in ogni pagina i dati di uno studente con le lezioni fatte con lui nella sottomaschera.
Posso anche inserire nuovi studenti dalla maschera.
E fin qui funziona tutto.
Quando provo a inserire una nuova lezione nella sottomaschera (query), però, mi chiede il nome dello studente, mentre io vorrei che in automatico scegliesse il nome dello studente di quella pagina.

Spero di essermi spiegata bene...
Qualcuno ha capito e può aiutarmi???

Grazie davvero.
shenka

10 Risposte

  • Re: Problema maschera inserimento dati

    Potresti descrivere esattamente tutte le tabelle con i campi e le relazioni? C'è qualcosa che non mi quadra...
  • Re: Problema maschera inserimento dati

    Ok, allora:
    TABELLE
    TabellaStudenti: IDStudente, Nome(nominato come SNOME), Scuola,Prof,Classe,Programma,LinkDocumentazione,Note
    TabellaLezioni:IDLezione,Nome(nominato come LNome),Data,Argomento,Note,Comunicazioni
    QUERY
    LezioniperCognome: (dato il Nome dello Studente che prende dalla MascheraGenerale) restituisce tutte le lezioni di quello studente con data, argomento, note e comunicazioni
    MASCHERE
    MascheraGenerale: ogni studente della TabellaStudente ha una sua pagina che presenta tutti i dati della TabellaStudente e, nella stessa pagina, ho messo una sottomaschera che mi mostra le lezioni solo di quello studente (tipo tabella excel) con i dati restituiti dalla query LezioniperCognome.

    RELAZIONI
    [TabellaStuente].[SNome] con [TabellaLezioni].[LNome]

    Funziona tutto. quindi ogni studente ha la sua pagina con i dati della TabellaStudente e un tabulato nella stessa pagina con tutte le lezioni fatte con lui con Data, argomento, note e comunicazioni.

    Se voglio aggiungere uno studente nuovo, posso farlo tramite la stessa MascheraGenerale, andando all'ultima pagina (bianca) e se inserisco i dati me li salva correttamente nella TabellaStudente.

    Il problema si presenta quando voglio aggiungere una nuova lezione a uno studente dalla sua pagina e quindi precisamente dal tabulato dove ci sono già le sue lezioni precedenti.
    Posso inserire Data, argomento, note e comunicazioni e le salva nella TabellaLezioni senza però riempire il campo LNome. Quindi mi rimane una lezione senza nome che non verrà mai restituita dalla Query per nessuno studente.
    Per ovviare a questo problema ho messo nelle proprietà della TabellaLezioni il campo LNome come obbligatorio. E ora quando inserisco una nuova lezione non la salva proprio dicendomi giustamente che manca il campo LNome.
    Io vorrei che come ha usato il campo SNome per restituirmi le lezioni di quello studente, ugualmente lo usasse per salvare il record della nuova lezione.
    Ho provato in mille modi ma nulla ha modificato questo problema.
    Evidentemente non capisco proprio dove sta il problema.

    Spero di essere stata più chiara e grazie davvero per l'interessamento.

    Shenka
  • Re: Problema maschera inserimento dati

    Siamo sicuri che le relazioni siano corrette?
    Secondo me uno Studente partecipa a molte Lezioni. Fin qui OK.
    Ma a una Lezione possono partecipare molti Studenti.
    Se le cose stanno davvero così, le due tabelle sono in relazione molti-a-molti, quindi devi prevedere una tabella di Congiunzione (Presenze) con i seguenti campi:
    IDPresenza (contatore, chiave primaria)
    IDStudente (numerico)
    IDLezione (numerico)

    Ti consiglio di usare i campi contatore--->numerico per le relazioni.

    Poi potresti pensare a 2 maschera/sottomaschera:
    Studenti/Presenze
    Lezioni/Presenze

    Se provi a vedere le cose da questi punto di vista, molte altre dovrebbero tornarti meglio.
  • Re: Problema maschera inserimento dati

    Scusami, no, non mi sono spiegata.
    A ogni lezione partecipa un solo studente, quindi è una relazione Uno a Molti.

    Gira meglio così?
  • Re: Problema maschera inserimento dati

    Shenka ha scritto:


    A ogni lezione partecipa un solo studente, quindi è una relazione Uno a Molti.
    OK.

    Shenka ha scritto:


    Il problema si presenta quando voglio aggiungere una nuova lezione a uno studente dalla sua pagina e quindi precisamente dal tabulato dove ci sono già le sue lezioni precedenti.
    Posso inserire Data, argomento, note e comunicazioni e le salva nella TabellaLezioni senza però riempire il campo LNome.
    La relazione uno-a-molti ha la spunta su "Applica integrità referenziale"?
    Ma tu hai maschera/sottomaschera Studenti/Lezioni? Se tutto è corretto e l'hai costruita con la procedura guidata, non dovrebbero esserci problemi. Proverei a rifare la procedura guidata includendo tutti i campi...ma tieni presente che il campo Lezioni.LNome non lo devi compilare, dovrebbe apparire automaticamente...comunque sia c'è qualcosa di strano sul perchè hai relazionato i campi testo SNome--->LNome...
    Non ho capito perchè hai usato una query come sottomaschera!!!
  • Re: Problema maschera inserimento dati

    La spunta sull'integrità referenziale non ce l'ha.
    Inoltre, mi accorgo ora che dice che la relazione non è definita, quindi ti ho detto io che è 1amolti, ma il programma forse non la riconosce come tale...mmm...

    Allora secondo te dovrei inserire IDStudente come campo anche in TabellaLezioni e creare il collegamento tra TabellaStudenti.IDStudente e TabellaLezioni.IDStudente?
    Ma poi SNome e LNome devo nominarli semplicemente Nome e li usa come dato comune per la query?

    Ho messo la query nella sottomaschera perchè volevo solo le lezioni del singolo studente...altrimenti come avrei potuto fare? Credevo fosse l'univo modo per estrarre solo i record di mio interesse dalla tabellaLezioni. O no?
  • Re: Problema maschera inserimento dati

    Shenka ha scritto:


    la spunta sull'integrità referenziale non ce l'ha.
    Inoltre, mi accorgo ora che dice che la relazione non è definita, quindi ti ho detto io che è 1amolti, ma il programma forse non la riconosce come tale...mmm...
    Questo potrebbe aver falsato molte cose.

    Shenka ha scritto:


    Allora secondo te dovrei inserire IDStudente come campo anche in TabellaLezioni e creare il collegamento tra TabellaStudenti.IDStudente e TabellaLezioni.IDStudente?
    Sì, è il modo più standard e coerente di relazionare 2 tabelle.

    Shenka ha scritto:


    Ma poi SNome e LNome devo nominarli semplicemente Nome e li usa come dato comune per la query?
    Una volta relazionato con il campo IDStudente, il campo LNome diventa superfluo perchè sarà TabellaLezioni.IDStudente a ricreare la logica di relazione coerente.

    Shenka ha scritto:


    Ho messo la query nella sottomaschera perchè volevo solo le lezioni del singolo studente...altrimenti come avrei potuto fare? Credevo fosse l'unico modo per estrarre solo i record di mio interesse dalla tabellaLezioni.
    Non si può dire che hai fatto una cosa sbagliata. Semplicemente non hai ottimizzato una strategia che prevederebbe l'uso di maschera/sottomaschera Studenti/Lezioni in maniera davvero efficiente.
  • Re: Problema maschera inserimento dati

    Ciao...sono ancora quì...

    Ho fatto come mi hai consigliato e quindi ora ho:
    TABELLE
    TabellaStudenti: ID studente, Nome, scuola.etc
    TabellaLezioni: ID lezione, ID studente, data, argomento, note

    QUERY
    QueryLezioniperCognome: presenta data, argomento e note di un singolo ID studente e ho messo come condizione che ID studente = [tabellastudenti].[ID studente]

    RELAZIONI
    Le tabelle sono legate da ID studente uno-a-molti e lo riconosce adesso.

    MASCHERE
    quelle di prima, ovvero maschera con una pagina per ogni studente con tutti i suoi dati e sotto il tabulato con le sue lezioni.

    In realtà funziona tutto come prima, ma quando provo a isnerire una nuova lezione dal tabulato mi chiede sempre di inserire ID studente, ovvero non riconosce l'ID studente utilizzato per la query presente nei dati sopra....

    Quindi il problema è sempre lì, identico a prima.

    Hai altri consigli da darmi?

    Grazie davvero
    shenka
  • Re: Problema maschera inserimento dati

    Se hai detto che ora la relazione è corretta, ti consiglio vivamente di cancellare vecchie maschera/sottomaschera Studenti/Lezioni e ricostruire maschera/sottomaschera Studenti/Lezioni TUTTO con la PROCEDURA GUIDATA. Nella prima finestra della procedura guidata (dai un'occhiata alla guida in linea) abbi cura di includere TUTTI I CAMPI di ENTRAMBE LE TABELLE. Otterrai il campo IDStudente nella sottomaschera Lezioni che comparirà molte volte automaticamente e tu non lo devi neanche toccare. Così deve funzionare per forza.
  • Re: Problema maschera inserimento dati

    Grazie ho rifatto le maschere e funziona tutto bene.

    Grazie davvero per il tempo e l'interessamento.

    Ora devo solo sistemare un po' di cose a livello grafico.

    Grazie ancora
    ciao
    shenka
Devi accedere o registrarti per scrivere nel forum
10 risposte