ACCESS: Come collegare due caselle di testo in una maschera

di il
14 risposte

ACCESS: Come collegare due caselle di testo in una maschera

Salve, il mio problema è il seguente.
Ho una maschera in cui ho creato una serie di "caselle di testo" col menù a cascata...cioè che mi permettono di selezionare una voce tra una serie di voci già impostate che prendo dai campi di alcune tabelle create precedentemente. Adesso vorrei che selezionando una voce da una casella di testo, automaticamente si seleziona un'altra voce in un'altra casella. Ovvero le due voci devono essere collegate. Cioè: se ad esempio seleziono la voce "Prosciutto" nella casella di testo "Salume", allora automaticamente si deve selezionare la voce "PRS" nella casella di testo "Codice Salume". Come posso fare? Non so se conviene prendere i dati da due tabelle separate oppure se da due campi di una stessa tabella. E cmq non so come collegare tra di loro le due caselle di testo. Grazie mille in anticipo!

14 Risposte

  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    ANZARD ha scritto:


    Ho una maschera in cui ho creato una serie di "caselle di testo" col menù a cascata
    Mi sembra una definizione contraddittoria. In gergo si parla spesso di "caselle combinate a cascata"...non ho mai sentito parlare di "caselle di testo a cascata".

    La descrizione che hai dato del problema non è "brillante"...io non ho capito i dettagli. Potresti elencare tutti i nomi propri dei campi, delle tabelle, della/e maschera/e, in modo da darci un quadro completo della situazione?
    Poi spiega esattamente cosa vuoi fare/ottenere.
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    OsvaldoLaviosa ha scritto:


    ANZARD ha scritto:


    Ho una maschera in cui ho creato una serie di "caselle di testo" col menù a cascata
    Mi sembra una definizione contraddittoria. In gergo si parla spesso di "caselle combinate a cascata"...non ho mai sentito parlare di "caselle di testo a cascata".

    La descrizione che hai dato del problema non è "brillante"...io non ho capito i dettagli. Potresti elencare tutti i nomi propri dei campi, delle tabelle, della/e maschera/e, in modo da darci un quadro completo della situazione?
    Poi spiega esattamente cosa vuoi fare/ottenere.
    In pratica nella mia maschera ho tante caselle (Nome Cliente, Salume, Peso, ecc..), e per ognuna di queste caselle ho impostato che posso selezionare il dato che voglio da un menù a cascata, su una serie di dati presi dal campo di una tabella. Spiego con un esempio pratico: ho creato una tabella "Salumi", con due campi: "ID" e "Descrizione". Dentro "Descrizione" vi sono i record "Prosciutto, Salame, Coppa, ecc..". Dalla maschera ho impostato che la casella prenda i record dal campo "descrizione", e mi consenta di scegliere da un menù a cascata una tra le varie voci "salame, prosciutto, ecc..). Fin qui tutto ok. Adesso mi chiedevo se fosse possibile impostare che quando seleziono prosciutto nella casella "Salumi", in un'altra casella (quella "Codice Salume") automaticamente mi compaia il codice relativo al prosciutto (PRS007). I record relativi ai codici potrei prenderli da un'altra tabella oppure dal campo della stessa tabella delle "descrizioni".
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    ANZARD ha scritto:


    ho creato una tabella "Salumi", con due campi: "ID" e "Descrizione".
    La casella combinata Salume, quante colonne ha? 2? Se sì, la casella combinata poggia sulla 1a colonna, ma mostra la 2a?
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    OsvaldoLaviosa ha scritto:


    ANZARD ha scritto:


    ho creato una tabella "Salumi", con due campi: "ID" e "Descrizione".
    La casella combinata Salume, quante colonne ha? 2? Se sì, la casella combinata poggia sulla 1a colonna, ma mostra la 2a?
    Provo a risponderti, ma purtroppo non sono un grande esperto (come hai notato). Ha 3 colonne (da Proprietà/Formato/Numero colonne: "3"). Poggia sulla terza (da Proprietà/Dati/Colonna associata: "3"), la quale si riferisce a un piccolo codice numerico. E mostra sia la seconda che la terza (da Proprietà/Formato/Larghezza colonne: "0cm;14cm;2cm").
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    Ho bisogno di sapere:
    - cosa c'è scritto in "Origine riga"
    - da Origine riga si risale a una SELECT o NomeTabella o NomeQuery di cui mi interessa sapere i nomi esatti dei 3 campi

    Per me c'è qualcosa di strano su Colonna associata: 3. Generalmente si preferisce sempre 1...ma prima di andare avanti a ruota libera, preferirei che rispondessi alle mie domande scritte in alto.
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    OsvaldoLaviosa ha scritto:


    Ho bisogno di sapere:
    - cosa c'è scritto in "Origine riga"
    - da Origine riga si risale a una SELECT o NomeTabella o NomeQuery di cui mi interessa sapere i nomi esatti dei 3 campi

    Per me c'è qualcosa di strano su Colonna associata: 3. Generalmente si preferisce sempre 1...ma prima di andare avanti a ruota libera, preferirei che rispondessi alle mie domande scritte in alto.
    In "Origine riga" c'è scritto "Tabella Salumi" che è il nome della tabella da cui prendo i dati. La tabella è formata da 4 colonne: ID, Descrizione, Codice Pulsar e Codice Salume. Dal menù a cascata io visualizzo la 2° e la 3° colonna, ma quando poi seleziono il record mi compare solo la seconda.
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    Credo che dovresti fare così:
    1. Numero colonne: 4 (così includi anche la colonna CodiceSalume). Se vuoi continuare a vedere solo 2 colonne di fatto dentro la casella combinata, devi correggere Larghezza colonne: "0cm;14cm;2cm;0cm"
    2. Ora devi sapere che Access conta le colonne partendo da 0 quando vuoi sfruttare espressioni che le riguardano, quindi
    1a colonna=Column(0)
    2a colonna=Column(1)
    3a colonna=Column(2)
    4a colonna=Column(3) (quest'ultima parla del CodiceSalume che tu vuoi vedere da qualche parte)
    3. In visualizzazione struttura maschera aggiungi una "casella di testo" (libera, non associata) e dentro ci scrivi una espressione equivalente a:
    =[NomeControlloCasellaCombinataCon4Colonne].Column(3)
    Per NomeControllo...ecc... intendo la proprietà "Nome controllo" corrispondente alla casella combinata dove prima avevi 3 colonne, ora 4.
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    OsvaldoLaviosa ha scritto:


    Credo che dovresti fare così:
    1. Numero colonne: 4 (così includi anche la colonna CodiceSalume). Se vuoi continuare a vedere solo 2 colonne di fatto dentro la casella combinata, devi correggere Larghezza colonne: "0cm;14cm;2cm;0cm"
    2. Ora devi sapere che Access conta le colonne partendo da 0 quando vuoi sfruttare espressioni che le riguardano, quindi
    1a colonna=Column(0)
    2a colonna=Column(1)
    3a colonna=Column(2)
    4a colonna=Column(3) (quest'ultima parla del CodiceSalume che tu vuoi vedere da qualche parte)
    3. In visualizzazione struttura maschera aggiungi una "casella di testo" (libera, non associata) e dentro ci scrivi una espressione equivalente a:
    =[NomeControlloCasellaCombinataCon4Colonne].Column(3)
    Per NomeControllo...ecc... intendo la proprietà "Nome controllo" corrispondente alla casella combinata dove prima avevi 3 colonne, ora 4.
    Grandissimo! Ho seguito alla lettera i tuoi consigli e sono riuscito a venirne a capo! Un ultima cosa volevo chiederti. Questi dati che seleziono nella maschera io li "verso" dentro i campi di una nuova tabella (dalla quale poi creare le varie query e i vari report). In questa nuova tabella c'è ovviamente il campo "CodiceSalume" che vorrei riempire in automatico con quello che si seleziona nella maschera (dalla casella di testo, tramite la formula =[NomeControlloCasellaCombinataCon4Colonne].Column(3) da te consigliatami). Come faccio a versare il valore dalla casella di testo della maschera al campo della nuova tabella. Grazie mille in anticipo!
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    Devo essere sincero che sono riuscito imbeccare la prima problematica con intuito e un po' di fortuna, ma gradirei avere un quadro completo della situazione, ossia:
    - tutti i nomi propri delle tabelle
    - tutti i nomi propri dei campi di ogni tabella, con indicazine di chiave primaria
    - le relazioni
    - il nome proprio della maschera e i nomi propri di tutti i controlli (i campi almeno)
    - dentro quale tabella dovrebbe essere passato questo valore di cui parli

    Tieni presente che la casella di testo "libera" che ti ho fatto costruire dovrebbe svolgere solo un ruolo estetico, ma ritengo che il dato vero risiede dentro la casella combinata sulla 1a colonna...se descrivi tutto dettagliatamente riesco ad afferrare meglio il tuo database.
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    OsvaldoLaviosa ha scritto:


    Devo essere sincero che sono riuscito imbeccare la prima problematica con intuito e un po' di fortuna, ma gradirei avere un quadro completo della situazione, ossia:
    - tutti i nomi propri delle tabelle
    - tutti i nomi propri dei campi di ogni tabella, con indicazine di chiave primaria
    - le relazioni
    - il nome proprio della maschera e i nomi propri di tutti i controlli (i campi almeno)
    - dentro quale tabella dovrebbe essere passato questo valore di cui parli

    Tieni presente che la casella di testo "libera" che ti ho fatto costruire dovrebbe svolgere solo un ruolo estetico, ma ritengo che il dato vero risiede dentro la casella combinata sulla 1a colonna...se descrivi tutto dettagliatamente riesco ad afferrare meglio il tuo database.
    Hai ragione, chiedo venia, ma sono ancora inesperto e sto cercando di imparare in fretta. Dunque, in principio ho creato 5 tabelle (Tabella Nome, Tabella Descrizione, Tabella Prezzo, Tabella Confezione e Tabella Cliente). Ogni tabella è costituita da 3 campi (ID, Nome/Descrizione/../Cliente) e Codice). In pratica ad ogni valore (di Nome, Prezzo, ecc..) ho assegnato un codice numerico. La tabella "Tabella Descrizione" è l'unica che ha un campo in più, cioè quello "Codice Salume" (in aggiunta a ID, Descrizione e Codice). Ogni prodotto è in pratica caratterizzato da un Nome, una Descrizione, un Codice Descrizione (riportato nella stessa tabella), un Prezzo, una Confezione, e un Cliente. Ho creato quindi una maschera, con una serie di caselle combinate dove seleziono per ogni voce il giusto valore (es. in Nome metto Prosciutto, ecc..) e poi mediante un pulsante creato "Chiudi Inserimento" riporto tutti i dati inseriti in una nuova tabella "Tabella Codici", dove in ogni campo (Nome, Descrizione, ecc..) mi compare il codice numerico associato alla relativa scelta che ho fatto nella maschera. Questo perchè le varie caselle combinate della maschera sono legate ai campi di questa tabella, e versano in essi i valori numerici relativi al Codice (la terza Colonna). Adesso vorrei che contemporaneamente versassero anche i valori descrittivi (cioè la seconda colonna, i vari Nome, Prezzo, ecc..) in campi successivi della stessa tabella, ma non so come fare. Visto che ho già legato quelle caselle di testo a quei campi dove compare il codice (tramite Origine Controllo).
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    ANZARD ha scritto:


    OsvaldoLaviosa ha scritto:


    Devo essere sincero che sono riuscito imbeccare la prima problematica con intuito e un po' di fortuna, ma gradirei avere un quadro completo della situazione, ossia:
    - tutti i nomi propri delle tabelle
    - tutti i nomi propri dei campi di ogni tabella, con indicazine di chiave primaria
    - le relazioni
    - il nome proprio della maschera e i nomi propri di tutti i controlli (i campi almeno)
    - dentro quale tabella dovrebbe essere passato questo valore di cui parli

    Tieni presente che la casella di testo "libera" che ti ho fatto costruire dovrebbe svolgere solo un ruolo estetico, ma ritengo che il dato vero risiede dentro la casella combinata sulla 1a colonna...se descrivi tutto dettagliatamente riesco ad afferrare meglio il tuo database.
    Hai ragione, chiedo venia, ma sono ancora inesperto e sto cercando di imparare in fretta. Dunque, in principio ho creato 5 tabelle (Tabella Nome, Tabella Descrizione, Tabella Prezzo, Tabella Confezione e Tabella Cliente). Ogni tabella è costituita da 3 campi (ID, Nome/Descrizione/../Cliente) e Codice). In pratica ad ogni valore (di Nome, Prezzo, ecc..) ho assegnato un codice numerico. La tabella "Tabella Descrizione" è l'unica che ha un campo in più, cioè quello "Codice Salume" (in aggiunta a ID, Descrizione e Codice). Ogni prodotto è in pratica caratterizzato da un Nome, una Descrizione, un Codice Descrizione (riportato nella stessa tabella), un Prezzo, una Confezione, e un Cliente. Ho creato quindi una maschera, con una serie di caselle combinate dove seleziono per ogni voce il giusto valore (es. in Nome metto Prosciutto, ecc..) e poi mediante un pulsante creato "Chiudi Inserimento" riporto tutti i dati inseriti in una nuova tabella "Tabella Codici", dove in ogni campo (Nome, Descrizione, ecc..) mi compare il codice numerico associato alla relativa scelta che ho fatto nella maschera. Questo perchè le varie caselle combinate della maschera sono legate ai campi di questa tabella, e versano in essi i valori numerici relativi al Codice (la terza Colonna). Adesso vorrei che contemporaneamente versassero anche i valori descrittivi (cioè la seconda colonna, i vari Nome, Prezzo, ecc..) in campi successivi della stessa tabella, ma non so come fare. Visto che ho già legato quelle caselle di testo a quei campi dove compare il codice (tramite Origine Controllo).
    Pensi di potermi aiutare? Grazie in anticipo!
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    ANZARD ha scritto:


    in principio ho creato 5 tabelle (Tabella Nome, Tabella Descrizione, Tabella Prezzo, Tabella Confezione e Tabella Cliente). Ogni tabella è costituita da 3 campi (ID, Nome/Descrizione/../Cliente) e Codice).
    Ho la sensazione che ci siano errori di impostazione alla base. La cosiddetta NORMALIZZAZIONE. Ti suggerisco di scrivere un nuovo thread nella sezione "Progettazione database" in cui:
    - ridescrivi tutte le tue tabelle (ti consiglio di usare nomi di tabelle al plurale, es. Clienti, Prodotti...)
    - spieghi di cosa parla il tuo database
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    OsvaldoLaviosa ha scritto:


    ANZARD ha scritto:


    in principio ho creato 5 tabelle (Tabella Nome, Tabella Descrizione, Tabella Prezzo, Tabella Confezione e Tabella Cliente). Ogni tabella è costituita da 3 campi (ID, Nome/Descrizione/../Cliente) e Codice).
    Ho la sensazione che ci siano errori di impostazione alla base. La cosiddetta NORMALIZZAZIONE. Ti suggerisco di scrivere un nuovo thread nella sezione "Progettazione database" in cui:
    - ridescrivi tutte le tue tabelle (ti consiglio di usare nomi di tabelle al plurale, es. Clienti, Prodotti...)
    - spieghi di cosa parla il tuo database
    Ok. Provo a seguire il tuo consiglio. Grazie mille per la disponibilità!
  • Re: ACCESS: Come collegare due caselle di testo in una maschera

    ANZARD ha scritto:


    OsvaldoLaviosa ha scritto:


    ANZARD ha scritto:


    in principio ho creato 5 tabelle (Tabella Nome, Tabella Descrizione, Tabella Prezzo, Tabella Confezione e Tabella Cliente). Ogni tabella è costituita da 3 campi (ID, Nome/Descrizione/../Cliente) e Codice).
    Ho la sensazione che ci siano errori di impostazione alla base. La cosiddetta NORMALIZZAZIONE. Ti suggerisco di scrivere un nuovo thread nella sezione "Progettazione database" in cui:
    - ridescrivi tutte le tue tabelle (ti consiglio di usare nomi di tabelle al plurale, es. Clienti, Prodotti...)
    - spieghi di cosa parla il tuo database
    Ok. Provo a seguire il tuo consiglio. Grazie mille per la disponibilità!
    Ho creato un nuovo thread in cui ho riscritto tutto molto più chiaramente.
    Ti riporto tutto anche qui, magari sei in grado di capire il mio problema e aiutarmi:

    Dunque. Il mio obbiettivo era quello di creare una maschera interattiva in cui selezionare (da menù a cascata) una serie di record relativi a quattro diverse specifiche (che sono Prodotti, Prezzi, Clienti, Fornitori) e dove ad ogni record selezionato sia associato un codice numerico (esempio Prosciutto = 02 oppure 10euro = 04). E poi, dopo aver selezionato i vari record nella maschera, ho fatto in modo che in una casella di testo successiva (nella stessa maschera) mi comparisse il codice numerico totale (costituito dai quattro singoli codici in sequenza), che io andavo a copiare e incollare in una finale casella di testo (in seguito spiegherò il perchè). Dunque in origine ho creato quattro tabelle legenda: Prodotti, Prezzi, Clienti e Fornitori. Ognuna di esse costituita da 3 campi: ID, Descrizione (esempio Prosciutto o 10euro) e Codice (esempio 02 o 04). E nella maschera ho creato quattro caselle combinate per avere i menù a cascata dove mi comparisse sia la descrizione che il codice (accanto). Ho fatto così: Proprietà/Dati: in Origine Riga ho messo la relativa tabella legenda, in Colonna Associata ho messo 3; Formato: in Numero Colonne ho messo 3, in Larghezza Colonne ho messo 0cm;4cm;2cm (il primo campo ID non mi interessa). Fin qui tutto ok. Una volta selezionate le 4 specifiche, io ho creato un Articolo con il relativo Codice (esempio: Prosciutto 10euro Rossi AG SRL = 02041245). A questo punto mi interessa far si che tutti gli Articoli creati (con relativi codici) vengano presi e riportati in una nuova tabella (da cui poi estrarre query e report). Quindi ho creato una nuova tabella che ho chiamato Articoli, con i campi: ID, Cod.Prodotto, Cod.Prezzo, Cod.Cliente, Cod.Fornitore, Codice Esteso. Ho fatto in modo che i record selezionati nella maschera vadano a finire nel relativo campo della tabella (esempio se seleziono Prosciutto, che ha codice associato pari a 02, allora questo 02 va a finire nel campo Cod.Prodotto della nuova tabella. Mi è bastato agire nella maschera, dove per ogni casella combinata, in Proprietà/Dati/Origine Controllo, ho messo il Nome del relativo campo della tabella Articoli). Seguendo la stessa logica, in Codice Esteso va a finirci l'intero codice numerico. Quest'ultimo passaggio l'ho fatto così: come ho già detto ho creato nella maschera, dopo i 4 menù a cascata, una casella di testo, e in Origine Controllo ho messo la formula "=[Prodotti] & "" & [Prezzi] & "" & [Clienti] & "" & [Fornitori]; in modo che lì dentro mi comparisse il codice esteso. Poi per mandare questo codice nel campo Codice Esteso della tabella Articoli ho fatto così: ho creato nella maschera un'ultima casella di testo vuota, dove in Proprietà/Dati/Origine Controllo ho messo Codice Esteso (il nome del campo della tabella Articoli). E poi ogni volta devo copiare manualmente il codice che mi compare nella casella precedente della maschera e incollarlo su quest'ultima casella (un metodo un pò macchinoso ma non sono riuscito a risolvere diversamente). Fino a qui zero problemi. Ma adesso il punto è che ho deciso di "versare" nella tabella Articoli non solo i valori dei codici (cioè "02", "04", che tutt'ora verso) ma anche i valori effettivi delle descrizioni (cioè ad esempio il valore "Prosciutto", "10euro", ecc..). Per cui ho creato 4 nuovi campi nella tabella Articoli, che sono: Prodotti, Prezzi, Clienti e Fornitori. E lì dentro voglio versare i valori descrittivi. Ma è possibile farlo agendo sulle medesime caselle combinate della maschera (i menù a cascata) che attualmente già "versano" i valori numerici (i codici) nei primi campi della tabella Articoli? Oppure devo creare nella stessa maschera 4 nuove caselle combinate e associarle ai nuovi campi della tabella Articoli, dicendogli di versare i valori descrittivi? E se così fosse, come posso far si che selezionando un valore nel primo menù a cascata di Prodotti (quello che versa i codici) mi si selezioni lo stesso valore nel medesimo secondo menù a cascata di Prodotti (quello che versa le descrizioni)? Perchè il dover inserire manualmente due volte lo stesso valore in due diversi menù può portare ad errori umani.

    GRAZIE IN ANTICIPO PER LA PAZIENZA E PER LA DISPONIBILITA'. BUONA GIORNATA, DAVIDE.
Devi accedere o registrarti per scrivere nel forum
14 risposte