Casella combinata in relazione Molti a Molti

di il
15 risposte

Casella combinata in relazione Molti a Molti

Ritorno dopo un po di assenza. Riprendo a smanettare con access dopo un periodo piu o meno lungo. E riprendo lo stesso problema: quello del Cantiere Edile
Cercherò (spero) di essere chiaro (sarebbe piu semplice allegare un'immagine ma non so come si fà).
Comunque
- Ho 3 tabelle:
1 - T Cantiere (IDCa; Cantiere)
2 - T Data (IDDa;Data;LavEseg;)
3 - T Oper alias operaio (IDOp; Cognome; Nome)
Le relazioni che legano le tabelle sono del tipo Molti a Molti

Prima relazione M a M
T 1(Cantiere) e T 2 (Data)
1 Cantiere "contiene" Molte Date
1 Data "contiene Molti Cantieri.
Ho creato una tabella di raccordo tra la tbl Cantiere e la Tbl Data che ho chiamato RaccCantData i cui campi sono
IDCD (chiave primaria dove CD sta perCantiereData)
idca numerico
idda numerico
Poi una Query che ho chiamato QueryRaccCantData tra la tbl Cantiere e Tbl RaccCantData.
Sin Qui ok - funziona

Seconda Relazione M a M
2 - T Data
3 - T Oper alias operaio
Creo Tbl raccordo Data Operai che chiamo RaccDataOper i cui campi sono
IDDO (chiave primaria dove DO sta perDataOperai)
idda numerico
idca numerico
Poi una Query che ho chiamato QueryRaccDataOperai tra la tbl Datae Tbl RaccDataOperai.
e pure questa- funziona
-------------------------------------------
Ho creato una maschera a partire dalla tbl data (dove l'origine dei dati è la tbl Data)
Poi ho trascinato prima la "QueryRaccCantData e poi la QueryRaccDataOperai nella maschera appena creata. Funziona

Nella sottomaschera "QueryRaccCantData " creo una casella combinata dove scelgo il cantiere
Nella sottomaschera QueryRaccDataOperai una casella combinata dove scelgo Nome e Cognome dell'operaio.

Vorrei ora, nella maschera principale (Data) scegliere con casella combinata la data da inserire e quà il problema. Come faccio considerato che la Tbl Data è collegata con relaz 1 a M sia con la Tbl QueryRaccCantData che con la Tbl QueryRaccDataOperai dove in entrambe è presente l'idda (chiave esterna)?
E' forse questo l'errore?
Grazie a tutti

15 Risposte

  • Re: Casella combinata in relazione Molti a Molti

    Forse se faccio cosi funziona che dite?

    Le Tbl - Cantiere - Data - Operai

    La Tbl di Raccordo
    ID chiave primaria
    idca chiave esterna Cantiere
    idda chiave esterna data
    idop chiave esterna operai

    Tbl cantiere 1 a M con idca di tbl Raccordo
    Tbl Data 1 a M con idda di tbl Raccordo
    Tbl operai 1 a M con idop di tbl Raccordo -

    Ora dovrei creare la Maschera che con sottomaschere e caselle combinate mi permetta di inserire la data, il cantiere e gli operai
    Bhe .. Non so come si fà e soprattuto se funziona (non credo)
  • Re: Casella combinata in relazione Molti a Molti

    Ho scritto x ½ ora, ho lanciato l’anteprima e mi è stato chiesto di rifare il log...– ho perso tutto –
    Riscrivo ---- Molto Sinteticamente ------
    me la canto e me la suono
    Sono ritornato sui miei passi e adesso pare funzioni[/b] ……Bho…[/b].
    Ho cambiato un po le carte in tavola:
    TABELLE
    1- T Data (IDDa;Data;LavEseg;)
    2 - T Cantiere (IDCa; Cantiere)
    3 - T Oper alias operaio (IDOp; Cognome; Nome)
    4 – Tbl RaccDataCant (IDCD;idca;idda)
    5 – Tbl RaccCantOper (IDCO;idop;idca)
    QUERY
    1 – QueryRaccDataCant (IDCD;idca;idda;Cantiere) - funziona
    2 – Query RaccCantOper (IDCO;idop;idca;Cognome;Nome)- funziona
    MASCHERA
    1 Maschera in creazione guidata basata su QueryRaccDataCant
    1 a Sottomaschera ( trascinando la query) Query RaccCantOper
    Apro sottomaschera e x l’inserimento del nome dell’operaio creo una casella combinata (origine controllo idop; origine riga Tbl Oper – ok funziona
    Nella maschera principale ho i campi della QueryRaccDataCant (IDCD;idca;idda;Cantiere) – mi manca il campo data (tra TblData e Tbl RaccordoDataCant relazione join tipo 3 )-
    Nella query QueryRaccDataCant (origine record della maschera) inserisco la Tbl Data dalla quale prelevo il campo Data.
    A questo punto ho il campo Data da (tbl Data), ho l’idda da QueryRaccDataCant, posso costruire la casella combinata x l’inserimento della data. Lo faccio
    Pare funzioni (forse)
    Un autorevole Vostro aiuto/ suggerimento – x modifiche e/o correzioni è graditissimo
  • Re: Casella combinata in relazione Molti a Molti

    Secondo me è la tabella Date o LavoriEseguiti la tabella di raccordo fra Cantieri e Operai.
    Vorrei darti alcuni suggerimenti pratici per essere compreso meglio in futuro da tutti gli altri utenti:
    1. Usa nomi di tabelle sempre al PLURALE (Cantieri, Operai, Lavori o LavoriEseguiti (Date lo trovo poco significativo))
    2. Usa nomi di campo sempre al SINGOLARE
    3. Una tabella FIGLIA deve sempre contenere lo stesso nome di campo della tabella MADRE, generalmente come ultimo campo. Una tabella è di raccordo è figlia di 2 madri e deve contenere 2 campi "chiave esterna" (quelli di richiamo che dicevo prima).

    Ritornando al tuo progetto, la tabella Lavori deve avere i seguenti campi:
    IDLavoro
    Data
    TipoLavoro
    IDOperaio
    IDCantiere

    Relazioni:
    Cantieri.IDCantiere uno-a-molti con Lavori.IDCantiere
    Operai.IDOperaio uno-a-molti con Lavori.IDOperaio
  • Re: Casella combinata in relazione Molti a Molti

    Caro Osvaldo, ci avevo già provato (su tuo precedente identico suggerimento) e costruito il progetto avendo come tabella di raccordo, tra Cantiere e Operai proprio la Tbl Date (alias lavori eseguiti). Ho inserito anche molti dati. La difficoltà nella gestione è che ho il nominativo di uno stesso operaio ripetuto n volte ed ogni volta con diverso ID. Identica cosa accade se inserisco due date uguali x il medesimo cantiere (ho la stessa data con due ID diversi). La paura è che posso perdermi qualcosa. Da qui la necessità di avere il nome di un operaio identificato da un unico id (operaio Franco=id1 - Giovanni=id2 e cosi via). Identica cosa x il cantiere e per le Date.

    Ieri sera pensavo di esserci riuscito (ma cosi non è.

    Riaprendo la maschera che ho creato accade che seleziono il cantiere dalla casella combinata - poi la data sempre dalla casella combinata e nella sottomaschera QueryRaccCantOper compaiono i nomi degli operai presenti quel giorno su quel cantiere (pur avendo digitato la freccetta in basso nuovo record).
    E' come se la maschera sia anche di ricerca. A ben pensarci è forse anche giusto che sia cosi xchè, "che senso ha inserire una lavorazione in un giorno e nel medesimo cantiere se già presente se non per integrarlo o modificarlo? ragiono in progres e sbaglio. Ho provato ad inserire il cantiere con data diversa ma mi da sempre gli stessi operai. C'è qualcosa che non và - Bho
    Mi occorre un aiuto
  • Re: Casella combinata in relazione Molti a Molti

    Come faccio x inserire un'immagine. Sarebbe molto piu semplice
  • Re: Casella combinata in relazione Molti a Molti

    Per inserire una immagine devi...Vedi il rettangolo bianco dentro cui scrivi il tuo messaggio. Scendi più giù nella pagina e clicca sulla paletta azzurra "Invia allegato". Poi clicca su Sfoglia...ecc...

    Per tutto il resto occorre procedere per piccoli passi.
    Io non ho capito perchè non ti convince la struttura a 3 tabelle.
    Poi non ho capito cosa vuoi fare. Magari fai un paio di esempi concreti.
  • Re: Casella combinata in relazione Molti a Molti

    Osvaldo. Non so se sbaglio (sono un po nel pallone)
    Se considero la relazione tra cliente e fornitore - relazione M a M (1 fornitore molti clienti; 1 cliente molti fornitori). La tabella Ordini è il raccordo tra le due
    Ad ogni Ordine corrisponde un solo fornitore
    Nel mio caso accade che se considero la Tbl Cantieri (Cliente) e la Tbl Operai (Fornitore). La Tbl Data (Ordini) dovrebbe essere la Tbl di raccordo.
    Ma ad ogni Data (gg;mese;anno) non corrisponde un solo operaio (fornitore), ma Molti per cui la Tbl Data è in relazione M a M con la Tbl Operai (fornitori).
    Ciò detto ho pensato che avere un operaio/fornitore (Rossi) con diversi idoperaio (idfornitore) non era un problema e qundi ho cominciato a lavorarci. Dopo aver inserito almeno un centinaio di operazioni mi sono reso conto che da li a poco sarebbe diventato ingestibile (stesso nome operaio con diversi ID- in pratica - operaio 1--------M idoperaio). Ecco xchè mi sono rimesso a smanettare ed è uscito fuori tutto quanto raccontato
    Ho allegato due immagini ( Tipo Cliente/ordini/Fornitori) e altra Relazione con Data M a M con Oparei ( speriamo )
  • Re: Casella combinata in relazione Molti a Molti

    zonevinc ha scritto:


    Ma ad ogni Data (gg;mese;anno) non corrisponde un solo operaio (fornitore), ma Molti
    Questo discorso non ti deve depistare. Un campo Data non è significativo per essere eletto come univoco, quindi come chiave primaria. Ripetere la stessa Data per i vari TipoLavorazione accanto a ogni IDOperaio è una gestione della tabella Lavorazioni del tutto normale.
    Se domani vai a filtrare in base alla data 10/5/2015, ritroverai gli n record di Lavorazioni che ne fanno riferimento.

    Poi dalle 3 tabelle di partenza parli di Clienti, Fornitori ecc...qui non ti seguo più.
  • Re: Casella combinata in relazione Molti a Molti

    L’immagine deve essere larga almeno 0 pixel, alta almeno 0 pixel, al massimo larga 700 pixel e alta 2000 pixel. L’immagine proposta è larga 1118 pixel ed alta 938 pixel.
    Il messaggio è troppo corto.

    E' l'errore che mi da quando cerco di inviare l'immagine -- come faccio?
    ------------------------------------------------
    "Ripetere la stessa Data per i vari TipoLavorazione accanto a ogni IDOperaio è una gestione della tabella Lavorazioni del tutto normale".
    Cosi facendo accade che se per esempio l'operaio è solo 1 ( rossi Mario) nella tabella operai mi ritrovo Rossi Mario ripetuto tante volte x quante volte ha lavorato. Vorrei invece avere Rossi Mario una sola volta
    -------------------------------
    "Un campo Data non è significativo per essere eletto come univoco",

    Che il campo Data, seppur univoco, sia ripetuto più volte (ad esempio 3/10/2015 id(50) e 3/10/2015 (id55)) non mi crea alcun problema.

    Quello che cerco di fare (invano) è avere (ma per me è troppo)

    un'anagrafica Operai
    !
    --------------------> data
    !
    un'anagrafica Cantieri
  • Re: Casella combinata in relazione Molti a Molti

    "Poi dalle 3 tabelle di partenza parli di Clienti, Fornitori ecc...qui non ti seguo più."

    Scusami Osvaldo era solo per convincere me stesso che le Tbl Cantieri; Data; Operai
    è come Clienti; Ordini; Fornitori

    La differenza è che Fornitori è in relazione 1 a M con Ordini ( e quindi, in questo caso, Ordini è in relazione 1 a 1 con Fornitore)

    Nel Mio caso Data è in relazione 1 a M con Operai ma anche Operai è 1 a M con Data.

    --- Volevo precisare una cosa che forse mi è sfuggita nel tuo precedente suggerimento.
    La Tbl Lavori (IdLavori) non è per me significativa. E' significativa la Tbl Data xchè mi interessa sapere (successive interrogazioni) non tanto le lavorazioni eseguite quanto, x esempio, chi era presente in quel cantiere a quella data oppure ricercare tra due date la presenza o meno di un operaio ed ancora quanti operai erano presenti tra due date e su quali cantieri.
    Ecco perchè insisto con Date

    Sbaglio?
  • Re: Casella combinata in relazione Molti a Molti

    Allego relazioni progetto -.--
    Allegati:
    Il primo schema eseguito un po di tempo fa
    Il primo schema eseguito un po di tempo fa

    Ultimo schema relazioni
    Ultimo schema relazioni
  • Re: Casella combinata in relazione Molti a Molti

    Ho trovato questa soluzione (ved Relazioni) e Maschera allegati - pare funzioni.

    In pratica riesco ad avere un'anagrafica cantiere e un'anagrafica operai. La data (la stessa) invece si ripete con id diversi.
    Credo sia chiaro quello che voglio fare guardando le relazioni.

    UN suggerimento/aiutino per migliorare che dite?
    Allegati:
    17466_89d12d26089bf40106b5ebee6588a54b.jpg
    17466_89d12d26089bf40106b5ebee6588a54b.jpg

    17466_c743f4580c43fe4855e136753c3d326d.jpg
    17466_c743f4580c43fe4855e136753c3d326d.jpg
  • Re: Casella combinata in relazione Molti a Molti

    Rossi Mario compare una sola volta nella tabella Operai.
    Rossi Mario con il suo IDOperaio=10 compare molte volte nella tabella Lavori: è giusto che sia così. I Lavori di Rossi Mario possono coinvolgere sia uno stesso Cantiere, ma anche molti altri Cantieri.
    Devi ragionare sempre con gli ID innanzitutto. Altri accorgimenti (tipo casella combinata ben congeniata) serviranno a rendere il colpo d'occhio favorevole all'utente che digita.

    Non fare altri ragionamenti, nè commettere ulteriori errori.

    Tutto questo ragionamento serve solo a capire la struttura delle tue tabelle.
    Ora tu hai bisogno di ottimizzare il tuo lavoro, nel senso che (immagino) vorrai vedere UN SOLO Operaio in testa e sotto tutti i suoi Lavori (in diverse Date e forse pure su diversi Cantieri). Oppure UN SOLO Cantiere in testa e sotto tutti gli Operai che hanno lavorato in quel Cantiere in diverse Date. Questa è una fase successiva da ottimizzare con le maschere. Qui devi chiarire cosa preferisci.

    Se invece preferisci lavorare direttamente dentro la maschera Lavori, dovrai selezionare sia IDCantiere, sia IDOperaio...anche qui una ottimizzazione con caselle combinate ci sta bene.
  • Re: Casella combinata in relazione Molti a Molti

    Osvaldo - hai colto nel segno - Quello che dici è proprio quello che voglio fare - e ancora di più (spero).
    Ho provato a fare dei filtri con casella combinata in maschera e tasto di comando che apre la query (precedentemente creata) secondo il valore prescelto nella casella combinata (con macro). Il tutto è un po grossolano ma funziona. Non mi spaventano i filtri (anche perchè, male che vada un filtro alla excel si recupera sempre).
    Quello che ora devo cercare di fare è inserire per esempio quante imprese intervengono sul cantiere (subappaltatori - esempio ditta elettrica - impiantistica ecc -- (MOLTI) - Devo quindi costruire un'anagrafica "subappaltotori" - i pagamenti ricevuti ecc... - Pensavo di costruirlo a parte e poi collegarlo in qualche modo a quello corrente - mi viene piu semplice cosi (é la srada da percorrere? Bho..). Ci devo pensare. Cosi come l'anagrafica operai per il quale ho già realizzato un discreto database (per me è chiaro) - posto relazioni e maschera (mi piace com'è venuto) e mi piacerebbe collegarlo al "cantiere". E' chiaramente molto più semplice di "cantiere"
    So che tra il "mi piacerebbe farlo" e "farlo" c'è di mezzo il mare -
    Però, con un Vostro piccolo e autorevole aiuto sono convinto che posso riuscirci.
    Ora la domanda.
    L'anagrafica subappaltatori (per adesso tbl "subappaldatori"; IdSub; Nome Azienda e poi si vede) come l'attacco al cantiere? Che dici
    Allegati:
    Datab Dipendenti
    Datab Dipendenti

    Datab Dipendenti
    Datab Dipendenti
Devi accedere o registrarti per scrivere nel forum
15 risposte