Come evitare l'uso di sottomaschere

di il
8 risposte

Come evitare l'uso di sottomaschere

Buongiorno a tutti,
Premetto che sono un neofita e quindi chiedo scusa anticipatamente per qualsiasi eventuale "bestemmia informatica" scritta sotto.
Ho provato a cercare in giro, ma non ne vengo a capo.

Sto creando un Db Access per la gestione dei corsi di formazione così strutturato:
Tab_Anagrafica_Dipendenti: con chiave ID_Dipendenti = Contatore
Tab_Anagrafica_Corsi_di_Formaz: con chiave ID_Corso = Contatore
Tab_Anagrafica_Edizione_Corso: con chiave ID_Edizione = Contatore
Tab_Dati_Partecipazione: in cui devo andare a scrivere ID_Corso; Id_Edizione; Id_Dipendente + Qualche atro campo relativo al Dipendente

Premetto che ogni Corso può avere una o più Edizioni.

Veniamo al problema: Devo una maschera che mi faccia selezionare il CORSO e la sua EDIZIONE ed aggiungere i DIPENDENTI che vi hanno partecipato (uno o più).
Questa maschera deve scrivermi nella "TAB_Dati_Partecip" i seguenti campi: Id_Corso; Id_Edizione; Id_Dipendente (i 3 campi DEVONO essere tutti compilati, quindi nella proprietà della Tab ho specificato che i campi sono "Richiesti")

La soluzione "spartana" che ho trovato è:
In una Maschera ho creato:
- una combo per selezionare il CORSO; -> che scrive in Tab_Dati il campo ID_Corso
- una combo (in cascata con la combo_Corso) per selezionare la sua EDIZIONE -> che scrive in Tab_Dati il campo ID_Edizione
Nella stessa maschera ho aggiunto una 60ina di sottomaschere (e qui sta la "bestemmia informatica", scusate!!! ), come se fossero righe, ognuna composta da:
- Combo_Dipendenti + altri 4 campi che devono essere scritti nella "Tab_Dati_Partecip" (valutaz. dipendente, partecipato Sì/No, link attestato, etc...) -> che scrive in Tab_Dati il campo ID_Dipendente


Qualcuno sa indicarmi una soluzione più elegante per inserire i dipendenti (uno o più) con i relativi campi (valutaz. dipendente, partecipato Sì/No, link attestato, etc...) per Corso/Edizione???

La mia soluzione "spartana" funziona tranne il fatto che quando passo dalla maschera principale (in cui ci sono le due Combo "Corso" ed "Edizione") alle sottomaschere Dipendenti, il Db si incavola perchè giustamente richiede che sia valorizzato anche il campo Id_Dipendente (campo "Richiesto), oltre a Id_Corso e Id_Edizione (correttamente valorizzati dalle Combo).

Spero di non aver scritto troppe cavolate a aver fornito tutti gli elementi per capire la mia problematica
....Grazie anticipatamente per ogni consiglio/aiuto
Allegati:
20782_cac28898ee311b02079b5a8fcc2a1e04.png
20782_cac28898ee311b02079b5a8fcc2a1e04.png

8 Risposte

  • Re: Come evitare l'uso di sottomaschere

    Marcy76 ha scritto:


    Sto creando un Db Access per la gestione dei corsi di formazione così strutturato:Tab_Anagrafica_Dipendenti: con chiave ID_Dipendenti = ContatoreTab_Anagrafica_Corsi_di_Formaz: con chiave ID_Corso = ContatoreTab_Anagrafica_Edizione_Corso: con chiave ID_Edizione = ContatoreTab_Dati_Partecipazione: in cui devo andare a scrivere ID_Corso; Id_Edizione; Id_Dipendente + Qualche atro campo relativo al DipendentePremetto che ogni Corso può avere una o più Edizioni.
    Non hai indicato le relazioni...che io vedrei così:
    Dipendenti uno-a-molti Partecipazioni
    Corsi uno-a-molti EdizioniCorsi
    EdizioniCorsi uno-a-molti Partecipazioni

    Assodata questa struttura...immagino che tu hai difficoltà ad organizzare una opportuna casella combinata in Partecipazioni.IDEdizioneCorso in quanto hai bisogno di vedere sia l'"edizione" sia il "nome corso". Si tratta di ottimizzare la tua casella combinata.
  • Re: Come evitare l'uso di sottomaschere

    Esatto. Le relazioni sono esattamente come dici.
    Per come ho disegnato io la maschera (in modo spartano) dovrei fare in modo che le due Combo, scrivano i dati ID_Corso e Id_Edizione, solo DOPO che ho selezionato un Id_Dipedente.... in modo che i 3 dati vengano scritti CONTEMPORANEAMENTE sulla TAB_Dati_Partecip (e non mi dia errore in quanto i 3 campi sono tutti Richiesti).

    PS: ho aggiornato il primo post con l'immagine della Maschera da me creata
  • Re: Come evitare l'uso di sottomaschere

    Qualcosa mi dice che la maschera sia stata creata tutta in visualizzazione struttura. Io non progetterei la cosa così. Provo a dire il mio punto di vista (correggimi dove sbaglio).
    1. Immagino tu voglia inserire dati in Partecipazioni. Quindi una maschera Partecipazioni.
    2. I campi IDDipendente e IDEdizioneCorso devono essere 2 caselle combinate. La prima penso non ci siano problemi. La seconda deve pescare una "combinazione di valori", ossia Corso+Edizione. L'Origine dati di questa casella combinata deve essere una query (oppure una SELECT equivalente) in cui "mostri per bene" questa coppia di valori. Puoi decidere anche di concatenarli per mostrarli entrambi

    Per vederci più chiaro gradirei l'elencazione completa dei campi di Corsi e EdizioniCorsi.
  • Re: Come evitare l'uso di sottomaschere

    Ho riletto tutto con maggiore attenzione (spero).
    Il discorso della 60ina di sottomaschere è fuori da ogni logica progettuale.
    Piuttosto potrebbe essere valida l'idea delle combo a cascata: Corso--->EdizioneCorso. Allora direi:
    1. una maschera/sottomaschera EdizioniCorsi/Partecipazioni
    2. sulla maschera EdizioniCorsi progetti le 2 combo a cascata
    3. nella sottomaschera Partecipazioni avrai i campi di Partecipazioni con il campo IDDipendente casella combinata
  • Re: Come evitare l'uso di sottomaschere

    Grazie Osvaldo
    hihihhi.... avevo preannunciato che la soluzione delle 60 sottomaschere era "fuori da ogni logica progettuale", ma non ho idea di come fargli aggiungere più partecipanti nella sottomaschera Partecipanti (oltre al primo).

    Attualmente la struttura della mia maschera è così;
    NomeMaschera: [Anagr_04_PARTECIPANTI - InserisciPartecipanti]
    Tipo: Maschera Singola
    OrigineRecord: Tab_Dati_Partecipazione
    in cui ho inserito le due combo a cascata:
    CBOSelezionaCorso: con le colonne IdCorso e Titolo_Corso
    CBOSelezionaEdizione: a cascata IdEdizione, Titolo_Edizione con la condizioneIdCorso=[Forms]![Anagr_04_PARTECIPANTI - InserisciPartecipanti]![CBOSelezioneCorso]

    OUTPUT: la selezione delle due Combo, mi genera un nuovo record sulla TAB_DATI_PARTECIP inserendo IDCOrso e IDEdizione

    In questa stessa maschera, ho creato una sottomaschera (copiata e poi inserita per altre 60 volte) così costituita:

    NomeSottoMaschera: [Anagr_05_PART - Sottomaschera01]
    Tipo: Maschera Singola
    OrigineRecord: Tab_Dati_Partecipazione
    in cui ho inserito
    CBOSelezionaDipendente: con le colonne Id_Partecipante; Nome_Cognome
    e i campi "Effettuato", "Valutazione", "Motivo" e "Link_Doc"
    OUTPUT: se non mi desse l'errore, questa dovrebbe aggiungere alla TAB_DATI_PARTECIP, anche il valore IDPartecipante soddisfando così i criteri dei CAMPI RICHIESTI della tabella in esame

    I collegamenti tra maschera e sottomaschera sono:
    Collegamenti Campi Master:IdCorso;IdEdizione
    Collegamenti Campi Secondari: IdCorso;IdEdizione


    Le due problematiche che ho sono:
    1) mi à errore quando passo dalla Maschera Principale (che definisce IDCorso e IDEdizione) alla prima sottomaschera (che definisce il campo "Richiesto" 'IDPartecipante) perché ancora gli manca quest'ultimo
    2) non saprei come, nella stessa maschera, poter scegliere più partecipanti all'EdizioneCorso. L'unica strada che "ho trovato" è stata quella di ricopiare 60 volta la sottomaschera e inserirla 60 volte nella Maschera Principale Forse devo usare una Sottomaschera Continua?


    Grazie per la pazienza e scusa se non mi spiego con i termini corretti


    Forse, con l'immagine qui sotto, è più chiara la Struttura.
    Allegati:
    20782_9e92a7442c6e4507a79848af66c1ad34.png
    20782_9e92a7442c6e4507a79848af66c1ad34.png
  • Re: Come evitare l'uso di sottomaschere

    Altra Informazione che può essere utile.
    Apro la Maschera (e quindi anche la Sottomaschera) via Macro in "Modalità Immissione Dati = Aggiungi"
  • Re: Come evitare l'uso di sottomaschere

    Un primo passettino forse l'ho risolto:
    Ho eliminato le 60 sottomaschere singole, ne ho creata una sola, come "Foglio Dati".
    Non era difficile.

    Ora mi rimane da risolvere il problema di fargli scrivere "contemporaneamente" tutti e 3 valori "richiesti" dalla Tab_Dati_Partecipazione: IdCorso; IdEdizione (presenti nelle Combo della maschera Principale) e IdPartecipante (presente nella Sottomaschera)
    ...senza ricevere errori (manca valore IdPartecipante) nel passaggio da Maschera a Sottomaschera
  • Re: Come evitare l'uso di sottomaschere

    Risolto.... ho cambiato la Modalità Immissione Dati da "Aggiungi" a "Modifica"!
    Ennesimo mio "delirio" progettuale

    Tutto ora funziona!!!

    Grazie Osvaldo.... e grazie al Forum per tutti i preziosi consigli!
Devi accedere o registrarti per scrivere nel forum
8 risposte