Riferimenti incrociati su Access - RISOLTO

di il
12 risposte

Riferimenti incrociati su Access - RISOLTO

Ciao a tutti.
Da profano mi sono messo a studiare i database ed in particolare l'Access nel tentativo di farmi un programmino di gestione del magazzino materiali per agevolarmi nel mio lavoro, visto che è ancora tutto su carta (!)...

devo memorizzare dove vengono stockati degli articoli, cosi' composti

articolo = nome+codice es: alfa100, Alfa600, Beta100, Beta200, ecc.

ogni articolo puo' essere di n varianti colore, colore espresso così:

colore= colore+variante es: BiancoOttico, BiancoPanna, NeroOpaco, NeroMetallizzato, ecc.

nel mio archivio vorrei inserire per ogni tipologia di ARTICOLO + COLORE il quantitativo e la posizione in magazzino.

Fin qua tutto ok, roba semplice. Il problema e la mia domanda che vi sottopongo è questa:

Vorrei che per ogni combinazione di articolo e colore si potesse memorizzare una nota, ma che sia specifica SOLO per quella combinazione ARTICOLO + COLORE

es: Alfa100 + BiancoOttico = nota1
Alfa600 + BiancoPanna = nota2 ... ecc

Altra cosa, vorrei che il campo NOTA venga proposto in automatico con la nota, se presente, all'inserimento di quella particolare combinazione di ARTICOLO + COLORE...

Spero di essermi spiegato: se inserisco a maschera l'ARTICOLO , poi il COLORE, vorrei che il campo NOTE mi venga proposto automaticamente se quella particolare combinazione era gia' stata inserita precedentemente...(eventualmente modificarla)

Allego anche lo screenshot delle relazioni (sbagliato) dal quale non riesco a darne fuori....

Potete cortesemente darmi una dritta?
Allegati:
22940_b70ffbc517867be90ca94a93c1ddfdf1.jpg
22940_b70ffbc517867be90ca94a93c1ddfdf1.jpg

12 Risposte

  • Re: Riferimenti incrociati su Access - RISOLTO

    1. Ti consiglio di dare nomi univoci ai campi. Tu scrivi ID a tutte le tabelle, rischiando (in futuro...ma anche adesso) di creare confusione al sistema, ma anche al tuo ordine di idee. Quindi nomina i campi IDArticolo, IDNota ecc...
    2. Conseguenza del punto 1. il campo IDNota della tabella tNote (mi raccomando i nome-tabella al PLURALE, nome-campo al SINGOLARE), rappresentabile per brevità come tNote.IDNota o [tNote].[IDNota], assolve automaticamente all'unicità della coppia IDArticolo+IDColore.
    3. Togli le relazioni tArticoli.IDArticolo uno-a-molti Magazzino.IDArticolo e tColori.IDColore uno-a-molti Magazzino.IDColore.
    4. Elimina i campi FK IDArticolo e IDColore dalla tabella Magazzino, in quanto direttamente rappresentati da IDNota.
  • Re: Riferimenti incrociati su Access - RISOLTO

    Grazie Osvaldo!
    Sei stato piu' utile di 30 ore di videotutorial guardati su youtube! Appena rientro a casa mi metto subito all'opera!
    Grazie anche dei consigli sulla formattazione, si vede sono proprio alle prime armi...Grazie!
  • Re: Riferimenti incrociati su Access - RISOLTO

    Nell'allegato puoi vedere alcune soluzioni.
    Per quanto rigurda la Nota non ha senso memorizzarla in un campo in quanto può essere visualizzata tranquillamente tramite la combinazione relativa ai dati relativi all'Articolo e quelli della Variante Colore una volta selezionati nella relativa maschera che gestirà l'inserimento in Magazzino.
    Il controllo dei possibili doppioni è gestito dai vari indici nella struttura delle tabelle.
    Allegati:
    21646_4897a1836bef722e2b8a116fe518e683.jpg
    21646_4897a1836bef722e2b8a116fe518e683.jpg
  • Re: Riferimenti incrociati su Access - RISOLTO

    Grazie CarlettoFed e buon anno a tutti!
    non avevo considerato la seconda e terza soluzione, anche se a dire il vero non so se realizzare una tabella a parte per le varianti, essendo esse poco rindondanti ( per farti capire, la variante "canarino" e "sole" è solo del colore giallo, "ottico" e "perla" solo del bianco e di ogni colore non ne tengo piu' di 1-2 lotti a magazzino.. ) per questo ci ragiono sopra.
    Circa il campo note, non ho ben capito come dovrei memorizzare tale informazione in maschera... ok, una volta inserito articolo e colore, dove posso recuperare/memorizzare la relativa nota se non in un campo? Mi sfugge qualcosa...
  • Re: Riferimenti incrociati su Access - RISOLTO

    La visualizzazione di quella che tu chiami nota la puoi effettuare tramite un campo calcolato, come puoi vedere dall'immagine allegata, dove inserire come Origine controllo la seguente formula :
    • =cmbIDArticolo.column(1) & "-" & cmbIDColore.column(1) & cmbIDVariante.column(1)
    dove cmbIDArticolo, cmbIDColore, cmbIDVariante sono i tre controlli Casella combinata dalle quale vengono selezionati i vari valori da inserire nella tabella relativa al Magazzino.
    Allegati:
    21646_59d19ca059c7ca72c59f06bdf735523c.jpg
    21646_59d19ca059c7ca72c59f06bdf735523c.jpg
  • Re: Riferimenti incrociati su Access - RISOLTO

    Ah, ecco il problema...
    la nota che devo mettere è del tipo " il colore non va bene" "il colore tende al rosso" " il colore è sbiadito", non l'unione dei tre campi come mi hai fatto vedere... evidentemente non mi ero espresso bene..
    In tal caso devo necessariamente metterlo in un campo note, giusto?
  • Re: Riferimenti incrociati su Access - RISOLTO

    Credo proprio di sì, se il tuo intento è quello di memorizzare una qualsiasi cosa che risulta non essere reperibile dai campi della tabella.
  • Re: Riferimenti incrociati su Access - RISOLTO

    @ CarlettoFed

    Ho finalmente messo in piedi la tua terza soluzione, però ho il problema dei doppioni...
    Guardando bene il tuo terzo esempio ho visto metti la tabella degli indici... e vedo la voce "Doppioni", che non è uno dei campi della tabella...
    Mi sono rimesso a cercare ma in tutti i tutorial e manuali (di base) che ho, nessuno spiega come usare gli indici...
    Saresti cosi' gentile da dirmi come creare/usare l'indice Doppioni che hai messo ? O darmi un link dove lo spiegano..
    Grazie ancora ... per l'ennesima volta!
  • Re: Riferimenti incrociati su Access - RISOLTO

    Come puoi vedere la tabella tMagazzino contiene al suo interno Il campo IDArticolo.
    Per impedire che si possano inserire più Articoli con lo stesso IDArticolo quindi si crea un indice che io ho chiamato Doppioni, ma che puoi chiamare come vuoi, impostando le proprietà
    • Primario - No
    • Univoco - Sì (questa impostazione impedisce l'inserimento nella tabella di due record con lo stesso IDArticolo)
    • Ignora Null - No
    Per avere un'idea sugli indici puoi vedere al seguente link https://support.office.com/it-it/article/Creare-e-utilizzare-un-indice-per-migliorare-le-prestazioni-0a8e2aa6-735c-4c3a-9dda-38c6c4f1a0ce
  • Re: Riferimenti incrociati su Access - RISOLTO

    CarlettoFed ha scritto:


    Come puoi vedere la tabella tMagazzino contiene al suo interno Il campo IDArticolo.
    Per impedire che si possano inserire più Articoli con lo stesso IDArticolo quindi si crea un indice che io ho chiamato Doppioni, ma che puoi chiamare come vuoi, impostando le proprietà
    • Primario - No
    • Univoco - Sì (questa impostazione impedisce l'inserimento nella tabella di due record con lo stesso IDArticolo)
    • Ignora Null - No
    Per avere un'idea sugli indici puoi vedere al seguente link https://support.office.com/it-it/article/Creare-e-utilizzare-un-indice-per-migliorare-le-prestazioni-0a8e2aa6-735c-4c3a-9dda-38c6c4f1a0ce

    Vediamo se ho ben capito:
    Sempre in riferimento alla tua Terza Soluzione:

    1 - se io volessi che ci sia inoltre una sola combinazione di IDColore + IDVariante nella tVariantiColore (ove io ci ho aggiunto la famosa nota),
    dovrei fare la stessa cosa inserendo un altro indice in tArticoli riferito a IDVarianteColore?
    E' giusto se eseguo una query del genere per crearlo? CREATE UNIQUE INDEX Doppioni ON tArticoli(IDVarianteColore)

    2 - Domanda da ignorante... i nomi degli indici devono essere univoci all'interno dello stesso db ? Tanto per sapere, non mi costa nulla metterne uno di diverso....

    Grazie elevato alla n !
  • Re: Riferimenti incrociati su Access - RISOLTO

    Per avere un indice univoco IDColore + IDVariante lo devi creare nella tVariantiColore, come puoi vedere dall'immagine allegata,
    Il nome dell'indice deve essere unico solo all'interno della stessa tabella, cosa che comunque è lo stesso Access ad impedire.
    Allegati:
    21646_f7f8f85106e1267f555d2d63c1ff5c6b.png
    21646_f7f8f85106e1267f555d2d63c1ff5c6b.png
  • Re: Riferimenti incrociati su Access - RISOLTO

    Grazie infinite, ora funziona tutto correttamente!
Devi accedere o registrarti per scrivere nel forum
12 risposte