Maschera inserimento Nuovi Dati in semplice DB

di
Anonimizzato10455
il
4 risposte

Maschera inserimento Nuovi Dati in semplice DB

Salve, premetto che sono un pincipiante di access, sto tentando di creare un semplice database che gestisca degli ORDINI (id, numero ordine, data ordine, quantità ordinata) di PRODOTTI (id, nome prodotto, materiale) consegnati da dei FORNITORI (id, nome fornitore, indirizzo, telefono).
In maiuscolo ho evidenziato le tre tabelle che gestirebbero il db con tra parentesi i campi delle tabelle stesse.

Queste sono le relazioni che mi servono e che ho già impostato.
Un ORDINE può contenere un solo PRODOTTO mentre un PRODOTTO può avere più ORDINI, un FORNITORE può avere più PRODOTTI mentre ogni PRODOTTO è esclusivo di un solo FORNITORE.

La mia esigenza di base è quella di avere una MASCHERA dove sono presenti i campi [nome prodotto; materiale; numero ordine; data ordine; quantità ordinata; nome fornitore; indirizzo; telefono].
E fino a qui ci sono arrivato da solo , con una semplice maschera generata automaticamente da una query che unisce i campi che mi interessano delle tre tabelle.

Il mio problema sorge quando, sempre tramite la stessa maschera che uso per scorrere gli ordini salvati, voglio inserire i NUOVI ORDINI. Mi spiego meglio.
Cliccando sulla classica icona "nuovo record" la maschera mi si presenta vuota, vorrei a questo punto inserire i dati del nuovo ordine nei propri campi, ma i campi mi risultano bloccati.
In particolare vorrei poter inserire il NOME PRODOTTO, scegliendo da un menu (casella combinata), e a seconda del nome prodotto inserito dovrebbero aggiornarsi automaticamente anche i campi relativi a FORNITORE, essendo il legame PRODOTTO-FORNITORE univoco penso questo sia possibile.

Sono riuscito sperimentando ad arrivare vicino alla soluzione usando gli id delle tabelle, ma ovviamente un inserimento di nuovi ordini usando gli id mi risulta inutile.

Scusate se mi sono dilungato, probabilmente la risposta è banale e sono io che non ho ancora raggiunto un livello minimo decente di access, ma è un po' che sto studiando manuali di base di access e su quelli non ho trovato soluzioni, oppure non ho capito io qualche passaggio.
Grazie mille in anticipo per l'aiuto.

4 Risposte

  • Re: Maschera inserimento Nuovi Dati in semplice DB

    Nel tuo progetto mi pare ci sia un grande assente... di cui pare tu non ti sia accorto.
    Le tabelle le hai descritte come Relazionate..., la tua esposizione dimostra che hai ragionato in modo coerente, ma poi nonhai tradotto il ragionamento in qualche cosa di utile ad Access per capire...
    Semplicemente non hai relazionato le tabelle, mancano i campi definiti ChiaviEsterne o ForeignKey, che ne definiscono le relazioni primarie...!

    Se un'ordine può contenere solo 1 prodotto, mi aspetterei di vedere nella tabella Ordini il campo Id(Prodotto) e su questo relazionare la Tabella in modalità 1-Molti dalla parte del Prodotto...

    Stessa cosa per i Prodotti e Fornitore... se un prodotto è esclusivo del Fornitore... deve esserci un campo nella Tabella Prodotti che lega il fornitore della Tabella fornitori al prodotto, altrimenti è tutto solo nella tua testa, e quando vai a fare le Query, non avendo le relazioni con Campi Chiave saranno in sola Lettura.

    Suggerisco di non chiamare le PK tutte ID... altrimenti quando le vai ad inserire nelle Tabelle di relazione creeresti confusione...!

    Se rivedi la struttura poi potrai fare una maschera basata su Ordini e non su tutto..., poi il Campo FK(IdProdotto) sarà una ComboBox con OrigineControllo(IdProdotto) ed OrigineRiga la Query che ti consente di selesionare il prodotto dalla tabella Prodotti... ecc ecc... ecc...

    Ho il sospetto che alla base ci sia una visione Similar Excel che ti porta completamente fuori strada.
  • Re: Maschera inserimento Nuovi Dati in semplice DB

    Innanzitutto grazie mille per la risposta velocissima

    Nel testo della richiesta mi ero dimenticato di includere le chiavi esterne che di fatto c'erano già, ho creato una maschera basata su Ordini e funziona

    Sono riuscito a creare una ComboBox che mi permetta di scegliere il prodotto da inserire nell'ordine

    Ultima cosa, nella stessa maschera, se possibilie, vorrei poter visualizzare anche il campo (nome fornitore) in una casella di testo, che si aggiorna sempre in relazione al (nome prodotto) che scelgo nella ComboBox, in modo da avere sott'occhio anche quello prima di inserire un ordine o mentre sfoglio i record nella maschera. Ho provato a trafficare con le query ma la casella di testo mi da sempre come risultato #Nome?
    ho la netta sensazione di essere di nuovo abbastanza fuori strada...
  • Re: Maschera inserimento Nuovi Dati in semplice DB

    Se ho capito bene la "visione Similar Excel" di cui parla Alex, credo si riferisca al fatto che tu voglia mettere su una singola maschera (in parole rozze, una singola videata) tutta quella pappardella di campi che in alcuni casi sono campi sensibili di relazioni. Tentare di mettere tutto su una sola maschera rischia facilmente di incappare in diversi errori come quello che scopri tu, oltre al fatto che non è elegante Access-mente parlando.
    Quando hai creato la maschera con la procedura guidata, hai tenuto conto della possibilità di creare maschere-sottomaschere, proprio in virtù delle relazioni che le legano? Ciò ti aiuterebbe molto più facilmente nel giocare con il "colpo d'occhio" piuttosto che impazzire con caselle combinate e query annesse, oltre al fatto che non dovresti avere alcun problema nell'inserimento di nuovi dati (ORDINI, PRODOTTI, FORNITORI che siano).
    Per me, con le relazioni che hai ingegnato tu, vedrei questa gerarchia:
    FORNITORI (maschera principale)
    PRODOTTI (sottomaschera di FORNITORI)
    ORDINI (sottomaschera di PRODOTTI)
    credo che vedresti tutti i dati da un'altra angolazione.
  • Re: Maschera inserimento Nuovi Dati in semplice DB

    Grazie mille per il consiglio, usando le sottomaschere come mi hai suggerito la cosa diventa molto più chiara, semplice e facilmente gestibile
Devi accedere o registrarti per scrivere nel forum
4 risposte