Caricare due campi tramite menu a tendina

di il
13 risposte

Caricare due campi tramite menu a tendina

Buongiorno a tutti,

sono nuovo sia qui nel forum che nel magico mondo di Access, ma il capo mi ha offerto volontario per svolgere questo lavoro, ed eccomi qui.

Devo realizzare una "scheda di produzione" che deve contenere fra le tante il nome del cliente e il codice della sua scheda elettronica da montare.
Ho fatto una tabella con i clienti, ed ho fatto una seconda tabella "articolI" nella quale associo il codice della scheda al nome del cliente, e la selezione viene fatta tramite menu a tendina grazie alla ricerca guidata.

Nella tabella "scheda di produzione" ho un campo dedicato all'articolo ed uno dedicato al cliente, vorrei che quando scelgo l'articolo dalla tabella "articoli" venga tirato su anche il nome del cliente (poi successivamente ci saranno anche altri campi, ma intanto mi serve questo).

La domanda è: qual è a tecnica da usare ? Sto leggendo libri e vedendo tutorial ma non trovo appigli da nessuna parte per colmare questa mia lacuna. Va usato codice SQL ? Codice VBA ? basta una macro ?

Ogni consiglio è ben accetto,
grazie a tutti

13 Risposte

  • Re: Caricare due campi tramite menu a tendina

    Forse ti manca una tabella di congiunzione, ma...esponi dettagliatamente:
    - nomi propri di tutte le tabelle che hai costruito
    - nomi propri di tutti i loro campi con indicazione della chiave primaria
    - le relazioni
    - rispiega quello che vuoi fare usando i nomi propri

    In alternativa ai primi 3 punti, puoi allegare una immagine della Finestra Relazioni.
  • Re: Caricare due campi tramite menu a tendina

    Buongiorno Osvaldo,

    Nella tabella Clienti ho il campo Cliente con la ragione sociale (per ora c'è solo questo, ma è in evoluzione).
    Nella tabella Articoli ho il campo Articolo (che viene scritto a mano da chi sarà preposto a questo) con il codice della scheda da montare, ho il campo Cliente (proprietario di quell'articolo) che viene preso dalla tabella Clienti tramite la ricerca guidata, quindi con il menù a tendina, ed ho un campo Note. In questa stessa tabella dovrò poi aggiungere i link alla documentazione di produzione, come link alla cartella o come link al singolo file, lo valuterò quando sarà il momento.

    Poi ho la tabella Scheda Di Produzione nella quale devo associare il codice articolo ad un numero di commessa.
    Il numero di commessa viene dal sw gestionale dell'azienda perchè è associato all'ordine, e viene scritto a mano nel campo Commessa.
    Quello che vorrei fare è selezionare l'articolo nel campo Articolo da un menù a tendina, o equivalente se c'è, ed avere riempito anche il campo Cliente (per il momento, poi, come già scritto, dovrò riempire anche dei campi con i link alla doc di produzione).
    In alternativa, potrebbe andare bene anche selezionare il contenuto Articolo dal menù a tendina (mi riferisco sempre alla Ricerca Guidata) e poi selezionare a mano anche il contenuto del campo Cliente da un secondo menù a tendina, ma questo deve presentare solo il cliente proprietario di quel codice secondo la tabella Articoli.

    Le chiavi primarie di tutte le tabelle sono in campi dal nome ID_Nometabella in ogni rispettiva tabella.

    Spero di aver chiarito tutto, sto finendo di compilare le tabelle, fra non molto sono in grado di pubblicare le relazioni, se necessario.

    Grazie per l'aiuto.
  • Re: Caricare due campi tramite menu a tendina

    Descrivo a parole mie lo scenario tabelle:

    Clienti
    IDCliente (PK)
    RagioneSociale

    Articoli
    IDArticolo (PK)
    Articolo
    Codice scheda da montare
    IDCliente (FK)
    Note

    SchedaProduzione (è così davvero che si chiama? Le tabelle si nominano al PLURALE)
    IDSchedaProduzione (PK)
    NumeroCommessa
    IDArticolo (o CodArticolo...non si capisce bene) (FK)

    Sono queste le tabelle/campi?
    Puoi esplicitare le relazioni?
    Correggimi dove ho sbagliato...anche se non comprendo il significato del campo [Codice scheda da montare] e l'utilizzo della tabella SchedaProduzione.
  • Re: Caricare due campi tramite menu a tendina

    Ecco l'attuale situazione (con il nome corretto della scheda di produzione)

    tabella Clienti
    ID_Cliente (PK)
    Cliente

    tabella Articoli
    ID_Articoli (PK)
    Articolo
    Cliente
    Note

    tabella Schede_Produzione
    ID_Scheda(PK)
    Cliente
    Articolo
    Commessa
    [ulteriore paccata di campi a seguire]

    quindi:
    il campo Cliente nella tabella Clienti viene scritto a mano
    il campo Articolo nella tabella Articoli viene scritto a mano
    il campo Cliente nella tabella Articoli viene scelto tramite menù a tendina dalla tabella Clienti
    il campo Articolo nella tabella Schede_Produzione (grazie per la segnalazione) viene scelto tramite menù a tendina dalla tabella Articoli, e vorrei che automaticamente il contenuto del campo Cliente nella tabella Schede_Produzione venisse riempito con il contenuto del campo Cliente preso dalla tabella Articoli.

    Perdona l'ignoranza, PK sta per Primary Key, ma FK ?
    Comunque non ho ancora impostato alcuna chiave secondaria.

    Grazie
  • Re: Caricare due campi tramite menu a tendina

    StackPtr ha scritto:


    tabella Articoli
    ID_Articoli (PK)
    Articolo
    Cliente
    Note
    A che serve il campo Cliente nella tabella Articoli?

    StackPtr ha scritto:


    tabella Schede_Produzione
    ID_Scheda(PK)
    Cliente
    Articolo
    Commessa
    [ulteriore paccata di campi a seguire]
    Devo essere sincero...non capisco il significato di questa tabella. Un giorno il Cliente Rossi Mario si presenta nella tua azienda e cosa fa? cosa chiede? Non hai una tabella Ordini?

    StackPtr ha scritto:


    quindi:
    il campo Cliente nella tabella Clienti viene scritto a mano
    il campo Articolo nella tabella Articoli viene scritto a mano
    il campo Cliente nella tabella Articoli viene scelto dal menù a tendina
    il campo Articolo nella tabella Schede_Produzione (grazie per la segnalazione) viene scelto dal menù a tendina, e vorrei che automaticamente il contenuto del campo Cliente venisse riempito con il contenuto del campo Cliente preso dalla tabella Articoli.
    Questo va tutto rivisto con adeguata NORMALIZZAZIONE tabelle/relazioni che ancora non c'è e dimostra che hai le idee confuse: procediamo passo passo.

    StackPtr ha scritto:


    Perdona l'ignoranza, PK sta per Primary Key, ma FK ?
    Comunque non ho ancora impostato alcuna chiave secondaria.
    FK=ForeignKey (chiave esterna). Senza i campi FK non puoi impostare le relazioni INDISPENSABILI per far stare in piedi la struttura del database. I campi FK hanno "generalmente" lo stesso nome dei campi PK, ma mentre i PK sono di tipo "numerazione automatica", FK sono di tipo "numerico - intero lungo"...secondo la logica poi delle relazioni uno-a-molti...dove MOLTI significa che quel valore si può ripetere molte volte (nella tabella figlia ovviamente).
  • Re: Caricare due campi tramite menu a tendina

    Certo che ho le idee confuse, è la prima volta che mi approccio ad Access !!

    Allora, mi addentro ulteriormente nelle spiegazioni:
    Si sta parlando di una azienda che assembla schede elettroniche conto terzi.
    Mario Rossi mi manda una sua scheda elettronica da valutare insieme a tutta la sua documentazione, disegni, liste componenti, note di montaggio e quant'altro necessario, tutti questi doc vengono archiviati su server apposito.
    Poi Mario Rossi mi manda ordine di produzione di n schede con quel codice, l'ordine viene gestito dal sw di gestione aziendale che associa a quell'ordine un numero di commessa.

    Attualmente viene preparato un foglio, che è appunto la scheda di produzione, associato a quel numero di commessa, sul quale i vari operatori segnano il compimento dei vari passi fino a conclusione dei lavori.
    Quello che devo fare è informatizzare solo questa fase, informatizzare questo foglio in modo che gli operatori compilino quanto necessario su un pc e non più su un foglio.

    Non serve un database clienti o fornitori o ordini o fatturazione o altro, è tutto su apposito sw gestionale. Qui serve solo sapere il numero di commessa, che scheda riguarda e di chi è, poi a seguire chi controlla il montaggio dell'SMD, chi il PTH, chi collauda, chi imballa ecc ecc. E' utile avere a disposizione i link alla doc di produzione, se qualcuno ha bisogno di verificare qualcosa lo deve poter fare su pc e non stampare qualcosa su carta che poi va perso da qualche parte.
    Per questo c'è la tabella Articoli che deve dire la scheda X appartiene a Y e qui ci sono i link ai documenti, e queste info io le devo rendere accessibili dalla Scheda di Produzione.

    Quindi, dando per assodato che devo continuare a leggere i libri che ho acquistato, mi basta sapere: quello che desidero fare con che tecnica si fa ? Se mi dici che serve della programmazione SQL io indago meglio in quella direzione, se mi dici che con un accorto utilizzo delle chiavi esterne e non so cos'altro ci si arriva, io mi studio meglio queste cose..
    Il mio problema in questo momento è che non so come affrontare questo dilemma perchè non so da che parte guardare a parte studiare un migliaio di pagine senza la certezza di riuscire a trovare quello che mi serve.

    Grazie per l'aiuto
  • Re: Caricare due campi tramite menu a tendina

    StackPtr ha scritto:


    Si sta parlando di una azienda che assembla schede elettroniche conto terzi.
    Mario Rossi mi manda una sua scheda elettronica da valutare insieme a tutta la sua documentazione, disegni, liste componenti, note di montaggio e quant'altro necessario, tutti questi doc vengono archiviati su server apposito.
    Poi Mario Rossi mi manda ordine di produzione di n schede con quel codice, l'ordine viene gestito dal sw di gestione aziendale che associa a quell'ordine un numero di commessa.

    Attualmente viene preparato un foglio, che è appunto la scheda di produzione, associato a quel numero di commessa, sul quale i vari operatori segnano il compimento dei vari passi fino a conclusione dei lavori.
    Quello che devo fare è informatizzare solo questa fase, informatizzare questo foglio in modo che gli operatori compilino quanto necessario su un pc e non più su un foglio.
    Perdonami, parli il tuo linguaggio professionale che io non conosco e non comprendo. Mi serve un esempio pratico pratico passo passo.
    A me sembra che ti serva una struttura tabelle molto simile al modello di database NorthWind. Qui si parla di Clienti, Ordini, DettagliOrdini, Articoli...ti basterebbe modificare qualche denominazione adeguata al tuo scenario.
    Ma una "scheda elettronica" è un Articolo? E tutti i suoi "componenti" sono anch'essi Articoli?
    Puoi raccontare passo passo la storia di un OrdineX proposto da Rossi Mario da quando NASCE come se dovessi compilare tutto a mano, fino a quando FINISCE?
  • Re: Caricare due campi tramite menu a tendina

    Siccome parli che devi solo assemblare schede la struttura è:
    tblClienti
    IDCliente (PK)
    Cliente

    tblSchede
    IDScheda (PK)
    Scheda
    IDCliente (FK)
    Note

    tblSchedaProduzioni
    IDSchedaProduzione (PK)
    Commessa
    IDArticolo (FK)

    tblFasi
    IDFase (PK)
    Fase

    tblDipendenti
    IDDipendente (PK)
    Dipendente

    tblSchedaProduzioneFasi
    IDSchedaProduzioneFase (PK)
    IDSchedaProduzione (FK)
    IDFase (FK)
    IDDipendente (FK)
    DataChiusuraFase (FK)

    un conto è la struttura delle tabelle e un'altro la selezione e/o la visualizzazione dei dati in una maschera.
    I campi ID, relazionari fra le varie tabelle, servono proprio ad evitare di ripetere i dati in più tabelle, come invece hai fatto tu.
  • Re: Caricare due campi tramite menu a tendina

    Nell'ambito del database, Articolo è la scheda elettronica da montare e Cliente è il suo proprietario, i componenti necessari al montaggio non sono considerati in questo documento.

    Non ho specificato che la correlazione fra Articolo e Cliente nel mio caso è univoca, cioè un dato Articolo può venire solo da un Cliente e da nessun altro. Un Cliente può darmi tanti Articoli da montare, ma ogni Articolo appartiene solo ad un Cliente.
    Un Cliente può ordinare solo il montaggio delle sue schede, dei suoi Articoli, e mai Articoli di altri Clienti (questo è il motivo della presenza del campo Cliente nella tabella Articoli).

    Detto questo, la sequenza degli accadimenti è questa:
    - Mario Rossi manda l'ordine per chiedere il montaggio di 100 schede codice XYZ. Il materiale per il montaggio può essere fornito da lui in conto lavoro o può essere di nostra fornitura assieme al servizio di montaggio, non è fondamentale saperlo adesso.
    - L'ordine ricevuto viene registrato nel sw gestionale, gli viene assegnato un numero di commessa (un numero interno che identifica quell'ordine e che rimane vivo da adesso a quando l'ordine viene chiuso con la fornitura della merce) e una data di scadenza (compatibile con il carico di lavoro già presente o comunque richiesta/concordata con il cliente).
    - Quando è arrivato il momento di prendere in carico quel numero di commessa, il magazzino prepara il materiale da montare. Se il materiale è stato fornito dal cliente, il magazziniere verifica che ci sia tutto, altrimenti estrapola dal magazzino tutto quello che serve.
    - Inizia la compilazione della scheda di produzione cartacea, vengono indicati il codice della scheda (XYZ), il fornitore (Mario Rossi), il numero d'ordine (dal gestionale), in numero di pezzi da montare (100), il numero di commessa (dal gestionale), la scadenza concordata.
    - Inizia anche la compilazione dei check di controllo, quelli relativi alla verifica dei materiali necessari al montaggio.
    - Supponendo che la scheda abbia sia componenti a montaggio superficiale che componenti di tipo through hole, la commessa va in gestione alla linea di montaggio SMD. Questi caricano i componenti previsti nelle macchine Pick & PLace (robot che posizionano i componenti dove richiesto), saldano i componenti, eseguono un controllo ottico con macchine apposite ed hanno alla fine la scheda con l'SMD montato. Ogni fase ha i suoi check nella scheda di produzione.
    - Adesso le schede vanno nella linea PTH dove vengono montati i componenti che hanno terminali da inserire nei "fori" sulla scheda. Questi possono essere inseriti a macchina o a mano a seconda di svariati fattori che non interessano adesso, alla fine il tutto viene saldato a macchina. Anche qui ogni fase ha i suoi check nella scheda di produzione.
    - Potrebbero esserci componenti che non possono essere montati a macchina, per esempio perchè troppo pesanti, troppo grandi o perchè sono in posizioni irraggiungibili dalla macchina. Vengono allora montati a mano al banco. Anche qui ci sono check sulla scheda di produzione.
    - La scheda completa viene verificata e aggiornato il check sulla scheda di produzione.
    - Se richiesto il collaudo, la scheda viene programmata (se necessario) e collaudata secondo procedura del cliente. Altri check in procedura.
    - Al termine la scheda viene etichettata secondo richiesta, imballata e spedita. Anche qui check di chiusura della scheda di produzione.

    La procedura è finita.

    Ho visto in parte il database Northwind, non ricordo se in un tutorial o su un libro, se fanno quello che mi serve lo cerco di volata !!
  • Re: Caricare due campi tramite menu a tendina

    Stifone,

    grazie per le dritte, ho provato a metterle su e non mi funziona, me le studio meglio.
  • Re: Caricare due campi tramite menu a tendina

    StackPtr ha scritto:


    Non ho specificato che la correlazione fra Articolo e Cliente nel mio caso è univoca, cioè un dato Articolo può venire solo da un Cliente e da nessun altro. Un Cliente può darmi tanti Articoli da montare, ma ogni Articolo appartiene solo ad un Cliente.
    Un Cliente può ordinare solo il montaggio delle sue schede, dei suoi Articoli, e mai Articoli di altri Clienti (questo è il motivo della presenza del campo Cliente nella tabella Articoli).

    Detto questo, la sequenza degli accadimenti è questa:
    - Mario Rossi manda l'ordine per chiedere il montaggio di 100 schede codice XYZ.
    Io questo ragionamento lo interpreto con le seguenti tabelle:
    Clienti
    IDCliente (PK)
    Cliente

    Ordini
    IDOrdine (PK)
    DataOrdine (questo campo non compare da nessuna parte, deve essere tracciato)
    Descrizione
    IDCliente (FK)

    DettagliOrdini
    IDDettaglio (PK)
    IDArticolo (FK)
    IDOrdine (FK)

    Articoli
    IDArticolo (PK)
    NomeArticolo

    Relazioni:
    Clienti.IDCliente uno-a-molti Ordini.IDCliente
    Ordini.IDOrdine uno-a-molti DettagliOrdini.IDOrdine
    Articoli.IDArticolo uno-a-molti DettagliOrdini.IDArticolo

    Per me è l'Ordine che ci fa capire che stiamo parlando di Mario Rossi che ordina n Articoli. L'Articolo XYZ è nella tabella Articoli in quanto tale e può avere ripetitività sitematica nella tabella DettagliOrdini.
  • Re: Caricare due campi tramite menu a tendina

    Ok, domani provo a metterlo su e faccio sapere.

    Grazie mille
  • Re: Caricare due campi tramite menu a tendina

    Beh, alla fine ho trovato la soluzione al mio problema.
    Sto studiando Access a fondo, e ho trovato come soluzione l'uso della casella combinata abbinata ad una manciata di righe di VBA. La soluzione viene dal libro "Costruire applicazioni con Access 2021" di Mike Davis, Apogeo.

    Torno a studiare, ho tanto da imparare... Grazie a tutti.
Devi accedere o registrarti per scrivere nel forum
13 risposte