Dati da sottomaschera

di il
18 risposte

Dati da sottomaschera

Ciao a tutti,
ho un problema da sottoporre alla community (che ringrazio finora).
Per comodità e semplicità descrivo il tema.
Voglio realizzare, per esempio, un database relativo al trasporto di uno scuolabus.
Mi sono organizzato così:
1* tabella veicolo
2* tabella conducente
3* tabella trasportati.
Ebbene succede che quando creo la maschera veicoli con la sottomaschera trasportati questa non mi consente di registrare le persone ... perchè ????
Credo ci sia qualche errore nelle relazioni tra le due tabelle.
Grazie

18 Risposte

  • Re: Dati da sottomaschera

    Sarebbe utile se tu indicassi tutti i campi di ogni tabella ed eventuali relazioni dettagliatamente.
  • Re: Dati da sottomaschera

    Nella tua descrizione c'è qualche stranezza... ad esempio che relazione esiste tra tblVeicolo e tblConducente...?
    Ci sono più Mezzi e più conducenti...?
    Hai un mezzo solo con più conducenti...?
    Hai molti mezzi ed un solo conducente...?

    Queste domande presuppongono 3 configurazioni completamente diverse...!

    Non si capisce poi, se hai definito e come le opportune relazioni tra le tabelle e di conseguenza le ChiaviPrimarie e ChiaviEsterne.

    DI solito(9 su 10) quando le SubForm non sono aggiornabili è perchè la Tabella lato Molti non è correttamente relazionata con le CHIAVI.

    Se così fosse, credo che prima di proseguire con la costruzione delle maschere, sia fondamentale colmare qualche lacuna sul Database...!
  • Re: Dati da sottomaschera

    Intanto grazie a osvaldo e alex per il loro tempo.
    Dunque la situazione è: questa:
    - più veicoli con più conducenti.

    Nel definire le relazioni ne ho provate diverse sena però ottenere successo.
    Per quanto riguarda le chiavi ho fatto in modo che ogni veicolo abbia una sua chiave primaria così come per ogni conducente e ogni trasportato.

    La condizione finale dovrebbe essere che io abbia una maschera dalla quale inserire
    1 veicolo - 1 conducente
    una sottomaschera nella quale inserire n trasportati.

    Spero si essere stato abbastanza chiaro.
    Ancora grazie

    Ciro
  • Re: Dati da sottomaschera

    Spero di non sbagliare. Presupponendo che le tabelle Veicoli e Conducenti hanno già tutti i dati delle loro rispettive generalità, queste due tabelle sono fra di loro nella relazione molti-a-molti, quindi devi creare una tabella di congiunzione che chiamerei Veicoli-Conducenti.
    Veicoli-Conducenti è poi in relazione uno-a-molti con Trasportati.
    Quindi maschera principale Veicoli-Conducenti, sottomaschera Trasportati.
    Sulla maschera principale consiglio di mettere 2 controlli caselle combinate, in modo da poter scegliere tanto un Veicolo, quanto un Conducente.
    Meglio non so, a grandi linee dovrebbe funzionare così.
  • Re: Dati da sottomaschera

    Lascia momentaneamente in StandBy la maschera, perchè con la struttura che hai fatto non potrai MAI gestire l'esigenza che hai esposto.
    Prima strutturiamo le Tabelle.

    La condizione che serve è MOLTI VEICOLI con MOLTI AUTISTI... questa, è la condizione più articolata da gestire e richiede una Tabella di Dettaglio, in quanto nei Database Relazionali non è possibile realizzare una Relazione MOLTI-MOLTI con solo 2 tabelle.
    Serve quindi una 3° Tabella che unisca le relazioni:
    
    TblAutomezzi[IdAutomezzo] (1)<--->(M)[IdAutomezzo]TblDettVeicAutisti (M)[IdAutista)<--->(1)[IdAutista]TblAutisti
    Ovviamente lato (1) i campi sono ChiaviPrimarie lato (M) sono ChiaviEsterne da definire Indicizzate Campo InteroLungo.

    Questa relazione ti consente di avere per 1 Veicolo... Molti Autisti, e viceversa 1 Autista può guidare Molti Veicoli.

    Poi per gestire l'inserimento la Maschera sarà basata sulla Tabella Veicoli, con SubForm basata su tabella tblDettVeiCAutisti, e nella SubForm inserirai al posto della TextBox associata a IdAutista una ComboBox associata a IdAutistia con OrigineControllo la Tabella Autisti...

    In questo modo puoi gestire il tutto.

    Rimangono le Finezze ma se concettualmente riesci a comprendere questo concetto ed a metterlo in pratica, poi le finezze vengono...
  • Re: Dati da sottomaschera

    Grazie Alex,
    la combinazione veicoli-conducente è OK, funziona correttamente anche la maschera.
    I problemi sorgono (ancora) quando con la procedura guidata inserisco la sottomaschera TRASPORTATI.
    La procedura mi chiede quali campi collegare. Pur avendo provato varie possibilità non risolvo nulla. L'abbinamento proposto o personalizzato non risolve il problema.
    Oppure succede che pur consentendo l'inserimento nella sottomschera TRASPORTATI i dati confluiscono nella tabella ma non restano abbinati al veicolo-conducente.
    Mi pare di capire che nella relazione veicolo-conducente > trasportato ci sia qualche errore.
    Eppure ho collegato IDTrasportato (in tabella trasportato - chiave primaria contatore) con IDTrasportato (in tabella veicolo-conducente [campo numerico]). Boh !!
    Ciao
  • Re: Dati da sottomaschera

    Dalla logica che tu hai descritto Veicoli-Conducenti è la tabella uno, rispetto a Trasportati tabella molti. Soltanto in questo modo Trasportati può diventare sottomaschera di Veicoli-Conducenti.
    L'ultima relazione che hai citato è errata.
    IDTrasportato (contatore) resterà un campo indipendente, non relazionato. Mentre devi porre la relazione fra IDVeicoli-Conducenti:
    Contatore (chiave primaria) in tabella Veicoli-Conducenti,
    Numerico (chiave esterna) in tabella Trasportati.
  • Re: Dati da sottomaschera

    Frena un'attimo...!
    Ora hai sistemato la Gestione tra Automezzi ed Autisti... ma manca un'elemento al tuo insieme...!!

    L'AZIONE da gestire.

    Qual'è l'azione da gestire ...? Il TRASPORTO.
    Dove devi inserire l'azione secondo te...?

    Io dico che la tabella Dettaglio Automezzi-Autisti è perfetta per registrare il trasporto.
    Quindi in quella tabella inserirai anche un campo Data ed una Causale.

    Ora per gestire il trasporto che sarà definito da IdDettaglioAutomezzoAutista(la PK della tabella) devi capire che si ripropone un'altra relaizone MOLTI-MOLTI.

    Quindi Tabella Anagrafiche, TabellaDettaglioAutostiAutomezzi e per ultimo la nuova tabella
    DettaglioTrasportatiTrasporto.

    Fai attenzione che l'autista è anche lui un'anagrafica e che differisce dal trasportato solo per alcune proprietà ma in particolare per il TIPO di Anagrafica.
    QUesto per farti capire che se la tabella che ora chiami Autisti la definisci come Anagrafica e se all'interno inserisci un campo TIPO(Autista/UtenteTrasportato) in una sola Tabella gestisci tutto...
    Ovviamente quando dovrai selezionare gli Autisti metterai un CRITERIO [Tipo='Autista'] e viceversa per i Trasportati.... o per altri tipi che ti si presenteranno nel futuro...!

    Credo che ti serva aprire un pò la mente alla strutturazione o ingegnerizzazione del Database che è una cosa molto sottovalutata da tanti.
  • Re: Dati da sottomaschera

    Ripensandoci, il mio ultimo messaggio è meno logico, quindi Alex ha ragione:
    DettaglioConducenti-Veicoli è in relazione molti-a-molti con Trasportati.
    Temo che l'idea di indicare una sola tabella Anagrafica che possa riunire tanto i Conducenti quanto i Trasportati, rischia di confondere le idee a ligiem.
    Riepiloganto, io credo che un'ottima strutturazione sia la seguente.

    CONDUCENTI (con IDConducente: contatore chiave primaria)
    VEICOLI (con IDVeicolo: contatore chiave primaria)
    TRASPORTATI (con IDTrasportato: contatore chiave primaria)

    CONDUCENTI-VEICOLI (con IDC-V (ho abbreviato) contatore chiave primaria / IDConducente e IDVeicolo: campi Numerici)(è giusto aggiungere altri campi tipo Data ecc...)

    CONDUCENTIVEICOLI-TRASPORTATI (avente IDCV-T (ho abbreviato) contatore chiave primaria / IDC-V e IDTrasportato: campi Numerici)
  • Re: Dati da sottomaschera

    Ringrazio Osvaldo e Alex per il loro aiuto e visto che non vengo a capo dell'arcano ho pensato di allegare il db nella sua forma elementare (ho messo dentro proprio la base per tentare di rendere + semplice possibile - a me - la ricerca della soluzione), spero così di risolvere.
    Il file è in formato accdb ma il sito non accetta estensioni, come faccio a postarlo ?
    E dire che usando filemaker il tutto si risolve in un attimo, ma questo è un altro discorso.
    Ciao e grazie
  • Re: Dati da sottomaschera

    Ripropongo il mio post che credo possa interessare molti. Potessi allegare il file forse sarebbe d'aiuto, ma non ci riesco. Grazie comunque a tutti.
  • Re: Dati da sottomaschera

    Per allegare un File puoi o devi usare un FileSharing Free in rete, ne trovi a volontà.
    Una volta ottenuto il LINK del download puoi inserire il LINK nel tuo Post ed indicare eventuali modalità/accorgimenti.

    Per mia scelta non approvo l'incentivazione di scambi tecnici usando ALLEGATI specifici, pertanto mi asterrò dal proseguire il mio supporto in queste modalità.

    Ovviamente la mia non è una posizione del FORUM ma esclusivamente personale, quindi troverai sicuramente altro supporto.
  • Re: Dati da sottomaschera

    Ho risolto il problema relazionando correttamente le varie tabelle.
    Come avrete immaginato c'erano altri campi nell'applcativo.
    Ora, nell'utilizzare access come origine dati per una stampa unione su word succede che prelevando i dati da una casella combinata RESIDENTE (che trae origine da una tabelle dei comuni e delle province italiane) succede - ad esempio - che l'unione venga data non dal comune di Vattelapesca bensì dal suo ID ... perché ???
    Grazie ancora
  • Re: Dati da sottomaschera

    Immagino che la casella combinata poggia su un campo ID. La stampa unione scrive i dati dal campo di origine e non da quello che appare visualizzato.
    Se vuoi vedere visualizzato il NomeComune, crea una query che importi anche la tabella di origine, includi il campo testo relativo al NomeComune, salva la query e fai la stampa unione della query.
Devi accedere o registrarti per scrivere nel forum
18 risposte