Correlare dati tramite sottomaschera

di il
8 risposte

Correlare dati tramite sottomaschera

Rieccomi , questa volta allego alcune immagini che meglio mostrano le mie tabelle, le relazioni, la formula ottenuta da una Query, la maschera con le 2 sottomaschere.
  • il campo IDAzienda della tabella Aziende è in relazione con IDAzienda tabella Eventi e con IDAzienda della tabella MIssioni
  • nella tabella Elenchi il campo ATTIVITA è in relazione con IDAttivita della tabella Attivita con il campo IDattivita e consente la scelta di uno o più valori del campo tipoattivita
  • la maschera principale Aziende include due sottomaschere la prima Eventi e la seconda Missioni
  • nell'intestazione di Azienda sono presenti un controllo ID , uno denominazione e uno tiposocieta
  • le tabelle (Eventi e Missioni) sono correlate al medesimo ID della tabella Aziende, ma i loro record solo in alcuni casi possono corrispondere , in particolare la Tabella Missioni raccoglie solo i record inerenti la sola ipotesi in cui è stato spuntato durante la scelta lo specifico valore “missione”.
Eventi contien eil campo giorno e Missioni contiene o il campo DATA.
Mi serve semplificare l'inserimento delle info, per cui se nella maschera (in fase di input nella sottomaschera Eventi, in corrispondenza al controllo IDAttivita ( già con origine riga SELECT [Attivita].[ IDattivita ], [Attivita].[tipoattivita] FROM Attivita; ) scelgo ad esempio le due voci trasporto e missione (visualizzate in un unico controllo e separate da uN punto e virgola ) poiché include il valore missione, l'informazione del campo giorno della sottomaschera Eventi dovrebbe essere visualizzato nel controllo DATA nella tabella Missioni ed infine memorizzato nella tabella d’origine Missioni.
Va da se che se non viene spuntato "missione" il record della tabella Missioni non esiste, ma che se a seguito di una modifica del record di Eventi si dovesse poi aggiungere la voce "missione", ecco che dovrebbe aggiungersi un corrispondente record di Missioni la cui data dovrebbe essere identica a quella in quel momento visualizzata nella sottomaschera Eventi.
Allegati:
28081_0d1c2e6827ee3e1abfdd2cfb2b026cb3.jpg
28081_0d1c2e6827ee3e1abfdd2cfb2b026cb3.jpg

aspetto maschera Eventi con sottomaschere
aspetto maschera Eventi con sottomaschere

8 Risposte

  • Re: Correlare dati tramite sottomaschera

    calascibetta ha scritto:


    il campo IDAzienda della tabella Aziende è in relazione con IDAzienda tabella Eventi e con IDAzienda della tabella MIssioni
    Perché le tabelle Eventi e Missioni non possono essere una tabella sola?

    calascibetta ha scritto:


    nella tabella Elenchi il campo ATTIVITA...…..
    Forse volevi dire "tabella Eventi"?

    calascibetta ha scritto:


    il campo IDattivita e consente la scelta di uno o più valori del campo tipoattivita
    Noto che hai messo un campo "multivalore". I campi multivalore sono una caratteristica implementata nelle ultime versioni di Access (credo da 2010 in poi) che non hanno equivalenze con altre applicazioni e hanno dato spesso più grattacapi che benefici. Rifletti attentamente su questa scelta, se dovesse essere determinante nel gioco tabelle e query che vuoi mettere in atto. Meglio la classica relazione molti-a-molti con tabella di congiunzione.

    calascibetta ha scritto:


    le tabelle (Eventi e Missioni) sono correlate al medesimo ID della tabella Aziende, ma i loro record solo in alcuni casi possono corrispondere , in particolare la Tabella Missioni raccoglie solo i record inerenti la sola ipotesi in cui è stato spuntato durante la scelta lo specifico valore “missione”.
    Questo rafforza in me l'obiezione che ho sollevato nella prima domanda. Tutto il resto andrebbe da sé in maniera più facile e intuitiva.
  • Re: Correlare dati tramite sottomaschera

    Perché le tabelle Eventi e Missioni non possono essere una tabella sola?
    ritenevo fosse meglio separarle visto che essendo discordanti tra loro, la maggior parte dei campi resterebbe vuota (i valori della tabella missioni servono solo per tale ipotesi e non per tutte le altre (ho disposto la tabella Attività appositamente per poter aggiungere altre voci, infatti il database che poi andrò a disporre utilizzerà più specificamente queste tabelle provvisorie che ti ho posto da esempio per verificarne la funzionalità .
    Forse volevi dire "tabella Eventi"?
    Si , scusa per l'errore.
    Noto che hai messo un campo "multivalore". I campi multivalore sono una caratteristica implementata nelle ultime versioni di Access (credo da 2010 in poi) che non hanno equivalenze con altre applicazioni e hanno dato spesso più grattacapi che benefici. Rifletti attentamente su questa scelta, se dovesse essere determinante nel gioco tabelle e query che vuoi mettere in atto. Meglio la classica relazione molti-a-molti con tabella di congiunzione.
    Effettivamente interrogando il db con alcune query mi ero accorto che ad esempio per lo stesso IDEvento , visualizzavo in query tanti record quanti erano stati i valori scelti nel controllo connesso ad attività.

    Suggeriresti dunque che sarebbe meglio rinunciare al mutivalore , ponendo in essere la relazione molti a molti?

    Parallelamente a questo db d'esempio lavoravo a quello che mi servirà effettivamente in ufficio, e, non sono molto pratico, (torno all'esempio qui riportato per non creare ulteriore confusione) forse sarei costretto a rimuovere la relazione, creare una nuova tabella con due campi ID numerici da correlare alle tabelle Aziende e poi nella maschera come devo comportarmi col controllo? Che tipo di controllo devo farvi corrispondere, combobox o casella di riepilogo o casella di controllo col segno di spunto (in tal caso come relazionare uno spunto per ogni voce?) e con quale istruzione (ti faccio un esempio il mio controllo ATTIVITA della sottomaschera Eventi visualizzava un valore numerico e non il valore testuale , essendo quello della tabella riferito all'IDAttivita della tabella Attivita , motivo per cui in corrispondenza ad origine riga avevo dovuto aggiungere l'istruzione SELECT [Attivita].[IDAttivita], [Attivita].[tipoattivita] FROM Attivita; che mi restituiva a video il valore testuale corrispondente).
    Non dico che la cosa mi spaventa ma sembra complessa o quantomeno laboriosa per le mie modeste capacità.
  • Re: Correlare dati tramite sottomaschera

    calascibetta ha scritto:


    ritenevo fosse meglio separarle visto che essendo discordanti tra loro, la maggior parte dei campi resterebbe vuota (i valori della tabella missioni servono solo per tale ipotesi e non per tutte le altre (ho disposto la tabella Attività appositamente per poter aggiungere altre voci, infatti il database che poi andrò a disporre utilizzerà più specificamente queste tabelle provvisorie che ti ho posto da esempio per verificarne la funzionalità .
    Dall'immagine che hai postato le due tabelle non sembrano tanto diverse. Per distinguere se si tratta di Evento o Missione aggiungi un campo di "distinzione" che specifica di cosa si tratta.

    calascibetta ha scritto:


    Suggeriresti dunque che sarebbe meglio rinunciare al mutivalore , ponendo in essere la relazione molti a molti?
    Parallelamente a questo db d'esempio lavoravo a quello che mi servirà effettivamente in ufficio, e, non sono molto pratico, (torno all'esempio qui riportato per non creare ulteriore confusione) forse sarei costretto a rimuovere la relazione, creare una nuova tabella con due campi ID numerici da correlare alle tabelle Aziende e poi nella maschera come devo comportarmi col controllo?
    Sì. Cambiando la struttura tabelle, cambia anche la logica e la gestione delle corrispondenti maschere.

    calascibetta ha scritto:


    Che tipo di controllo devo farvi corrispondere, combobox o casella di riepilogo o casella di controllo col segno di spunto (in tal caso come relazionare uno spunto per ogni voce?) e con quale istruzione (ti faccio un esempio il mio controllo ATTIVITA della sottomaschera Eventi visualizzava un valore numerico e non il valore testuale , essendo quello della tabella riferito all'IDAttivita della tabella Attivita , motivo per cui in corrispondenza ad origine riga avevo dovuto aggiungere l'istruzione SELECT [Attivita].[IDAttivita], [Attivita].[tipoattivita] FROM Attivita; che mi restituiva a video il valore testuale corrispondente).
    Generalmente sui campi FK conviene creare una casella combinata "ben congeniata". Leggi qui per ottimizzarla
  • Re: Correlare dati tramite sottomaschera

    Dall'immagine che hai postato le due tabelle non sembrano tanto diverse. Per distinguere se si tratta di Evento o Missione aggiungi un campo di "distinzione" che specifica di cosa si tratta.
    Dovrei quindi fare un'unica tabella con tutti quei campi aggiungendo anche "distinzione" , capisco che ha il compito di identificare le ipotesi differenti, ma la missione è pur sempre un evento, comunque "distinzione" che tipo di campo dovrebbe essere e come dovrebbe interagire più specificamente?
    Sì. Cambiando la struttura tabelle, cambia anche la logica e la gestione delle corrispondenti maschere. uhm allettante
    Generalmente sui campi FK conviene creare una casella combinata "ben congeniata". Leggi qui per ottimizzarla

    grazie comincio a documentarmi

    ho momentaneamente preparato le copie delle tabelle Attivita Eventi e Missioni (stessi nomi seguiti da un 2)
    ho cancellato il campo ATTIVITA (avevo provato a modificarlo, togliendo prima il criterio di ricerca, non bastava, ho tentato come in campo di testo ma nelle relazioni continuava a visualizzare ATTIVITA.Value) ne ho creato uno nuovo ATTIVITA2 (al momento campo di testo)
    e adesso ti posto l'immagine delle relazioni perchè non mi è chiaro come applicare alle mie nuove tabelle.2 la relazione molti a molti
    ricordo che serve una tabella con due campi numerici ID da mettere in relazione con le chiavi primarie di altre 2 tabelle (quali nel mio caso?)
    relazioni2.jpg
    relazioni2.jpg

  • Re: Correlare dati tramite sottomaschera

    Il campo di distinzione lo chiamerai TipoEvento. Tipo testo breve avente 2 soli valori possibili: "Evento"; "Missione". A tal proposito puoi implementare anche una "piccola" casella combinata che in questo caso (trattandosi di pochissimi valori), anziché prelevare dati da una tabella, puoi sfruttare Tipo origine riga: Elenco valori.
  • Re: Correlare dati tramite sottomaschera

    [/quote] Generalmente sui campi FK conviene creare una casella combinata "ben congeniata". Leggi qui per ottimizzarla
    [/quote]


    il file che mi hai allegato è chiaro, ma mi sorge un dubbio e per evitare disguidi ti posto una immagine dove ho sinteticamente riportato tabelle con tutti i loro campi e ho sinteticamente disegnato le relazioni che il documento evidenzia.
    esempio1.jpg
    esempio1.jpg

    Mi sono accorto che la tabella Libri resta con un campo numerico IDAutore non correlato. Si tratta di un errore o magari è presente in quanto predisposto per qualche altra relazione (che diventerebbe doppia in quanto verosimilmente correlato alla chiave primaria IDAutore della tabella Autori che già risulta collegata al campo numerico IDAutore di Autorità)?
  • Re: Correlare dati tramite sottomaschera

    Si tratta di un mio database "molto complesso" che prevede campi ripetuti qua e là per precise scelte soggettive. Puoi tralasciare questo aspetto puramente legato alla normalizzazione. Il documento mira a ottimizzare le caselle combinate e io ho fornito vari casi.
  • Re: Correlare dati tramite sottomaschera

    OsvaldoLaviosa ha scritto:


    Si tratta di un mio database "molto complesso" che prevede campi ripetuti qua e là per precise scelte soggettive. Puoi tralasciare questo aspetto puramente legato alla normalizzazione. Il documento mira a ottimizzare le caselle combinate e io ho fornito vari casi.
    ok
Devi accedere o registrarti per scrivere nel forum
8 risposte