Campo Lookup con Combo Box cascade

di il
11 risposte

Campo Lookup con Combo Box cascade

Vorrei definire una tabella contenente, fra l'altro, 2 campi, diciamo Categoria e Sottocategoria.
Categoria è un campo di tipo ComboBox popolato da una tabella "Categorie".
Sottocategoria è un altro campo di tipo Combobox che deve essere popolato in base alla Categoria scelta.
Non riesco a scrivere la corretta Select (nella modalità Design View della Tabella) per popolare la seconda combobox, in pratica non so come referenziare la Categoria selezionata in precedenza.

Per Alex: ho ordinato i 2 libri suggeriti e sono in attesa di arrivo dagli States .... Quindi mi scuso se continuo con le mie domande approssimative

11 Risposte

  • Re: Campo Lookup con Combo Box cascade

    La tua domanda riguarda un argomento trattato spesso e va sotto il nome in gergo di "caselle combinate a cascata". Prova a fare ricerche con queste parole chiave, oppure leggi qui
  • Re: Campo Lookup con Combo Box cascade

    Ti ringrazio ma non riesco a trovare la risposta. Mi spiego meglio, con una Form il problema l'ho risolto. Io vorrei risolverlo in fase di definizione della Tabella, in modo che semplicemente utilizzando la modalità di inserimento dati "alla excel" mi si attivi la tendina della seconda combo popolata come desidero. Più che la soluzione da copiare, mi interessa capire che cosa .... non capisco. In pratica: mentre sono in modalità di aggiunta/modifica dati (alla excel) della tabella, qual è il nome della variabile che identifica un altro campo del Recordset che sto modificando per poterlo inserire nella Select di lookup?
  • Re: Campo Lookup con Combo Box cascade

    Il giochetto delle caselle combinate a cascata si può ottenere solo con le maschere. Non puoi fare nulla in fase di struttura tabella (al riguardo). Potresti tutt'al più pensare di gestire la maschera in "visualizzazione foglio dati", in questo modo avresti il look tipico della tabella.
    Dimentica qualsiasi logica alla Excel.
  • Re: Campo Lookup con Combo Box cascade

    OK - Non era poi così fondamentale.
    Tuttavia - per spirito accademico - ti chiedo: non è strano ? Se ad esempio dentro alla query di lookup della seconda combo ci schiaffo dentro (per prova, si intende") un valore assoluto, tipo = "GELATI", la cosa funziona. Quindi la domanda diventa: possibile che a livello della query di lookup non sia accessibile un CAMPO del record che sto editando ? Mentre, ad esempio, se dichiaro un campo derivato posso usare il nome del camp ? é proprio perchè che ha disegnato questa cosa non l'ha resa possibile oppure c'è una ragione strutturale di fondo ? (In fondo se in altri contesti è possibile agire su un campo del record che si sta editando, perchè non dovrebbe esserlo all'interno della Select della property Lookup ? - grazie
  • Re: Campo Lookup con Combo Box cascade

    Forse se fai vedere ciò che hai realizzato fino ad ora si riesce a capire meglio come darti una mano.
  • Re: Campo Lookup con Combo Box cascade

    Sono posizionato sulla Tabella MOVIMENTI, in modalità "Design View"
    Nella tabella MOVIMENTI sono presenti - fra gli altri - 2 campi: CATEGORIA e SUBCATEGORIA.
    CATEGORIA è una combo, bound sulla tabella CATEGORIE e funziona come da aspettativa.
    SUBCATEGORIA è una combo che deve esporre le Subcategorie legate alla Categoria selezionata e bound sulla tabella SUBCATEGORIE.

    A livello di definizione tabella (Design View della tabella Movimenti), nel TAB delle properties di Lookup, inserisco la seguente query

    SELECT SUBCATEGORIE.SUBCATEGORIA FROM SUBCATEGORIE WHERE (SUBCATEGORIE.CATEGORIA)=XXXXXX);

    Cosa devo mettere al posto dei XXXXX per far sì che quando apro la tabella Movimenti, in modalità spreadsheet, dopo aver valorizzato la prima Combo (che funziona come da aspettativa) la seconda combo si popoli come dovrebbe ? XXXXX - nella mia aspettativa - è il valore che ho inserito nella colonna Categoria e che viene regolarmente salvata nel DB
  • Re: Campo Lookup con Combo Box cascade

    Nella "Struttura" della tabella non è possibile effettuare una "Ricerca" ove due campi (combo-box o list-box) siano fra loro collegati (uno in funzione dell'altro).
    Per gestire dei valori in cascata devi impiegare una maschera, assicurando la sequenzialità (nella imputazione del dato) fra l'elemento principale e quello sussidiario.
  • Re: Campo Lookup con Combo Box cascade

    OK. GRAZIE, come dicevo non è fondamentale ma sarebbe stato "nice to have"
    Resta la mia domanda "accademica": come mai ? voglio dire: perchè nell'ambito della query associata alla seconda combo non è possibile far riferimento ad un campo che a RUNTIME è disponibile ? e, altra domanda, perchè in altri ambiti di definzione di properites e di campi INVECE è possibile far riferimento ai campi del recordset ?
  • Re: Campo Lookup con Combo Box cascade

    In risposta ai tuoi quesiti:

    vanzuck ha scritto:


    Resta la mia domanda "accademica": come mai ? voglio dire: purché nell'ambito della query associata alla seconda combo non è possibile far riferimento ad un campo che a RUNTIME è disponibile ?
    devi considerare che l'operazione che vuoi condurre (selezione di due caselle combinate in cascata, ove la seconda è legata alla selezione della prima) implica che deve esistere una sequenzialità fra la scelta della prima combo-box e quella della seconda.
    Ciò non viene assicurato quando si opera su un record direttamente nella tabella, ove non è gestita una sequenza nelle operazioni.
    In tale condizione, essendo un unico processo, la funzionalità offerta da Access non permette di conoscere il valore della prima combo-box quando si agisce sulla seconda.
    Con lo stesso concetto, anche ponendo insieme i dati che alimentano le due caselle combinate (in una singola combo-box) non è possibile filtrarne progressivamente una parte (in modo da simulare l'operazione in cascata) in quanto nella "Struttura" della tabella, impostando una "Ricerca" si impiega un processo prefissato impossibile da suddividere nella sua funzionalità.

    vanzuck ha scritto:


    e, altra domanda, perché in altri ambiti di definizione di properites e di campi INVECE è possibile far riferimento ai campi del recordset ?
    In altri ambiti (come con le maschere) puoi agire in quanto gestisci la sequenzialità tramite codice VBA, in cui puoi controllare (e presentare) i dati all'occorrenza.
    Quindi selezionare la prima casella combinata e, solo dopo di questa, agire sulla seconda sfruttando la sequenza degli eventi proprio attraverso il linguaggio di programmazione.
  • Re: Campo Lookup con Combo Box cascade

    Purtroppo mi mancano le basi teoriche per seguire quello che hai scritto ma cedo che la spiegazione c'è ed esposta con professionalità.
    Grazie
  • Re: Campo Lookup con Combo Box cascade

    Ricalco quello già detto da willy55. In parole povere le tabelle sono solo CONTENITORI PRIMORDIALI di valori (e basta). La tabella (in Access) non è pensata per interagire con l'utente (se non con il semplice input). Per questo esistono le maschere che hanno mille altre funzionalità e versatilità grazie all'uso degli Eventi, quindi del VBA...ecc... Le caselle combinate a cascata sfruttano pienamente queste utilità.
Devi accedere o registrarti per scrivere nel forum
11 risposte