Filtri a cascata per scelta record

di il
17 risposte

Filtri a cascata per scelta record

Buongiorno a tutti,
sto sviluppando un DTBS in cui ho (oltre ad altre tabelle custom) le classiche tre tabelle: Ordini (dove viene rappresentata la testata dell'ordine), Dettaglio ordini (la quale associa l'ordine al prodotto) e Prodotti.
La questione è la seguente: la mia tabella Prodotti è composta da numerosissimi record che possono essere filtrati (grazie ad alcune relazioni) in base ad alcune proprietà che descrivono il prodotto stesso; la combinazione di queste proprietà (quindi effettuando filtri in sequenza - filtro su filtro) mi consente di individuare uno ed un solo record - quindi un prodotto. Questa operazione riesco a farla tranquillamente nella tabella Prodotti agendo, appunto, con i filtri (Excel rulez ).
Quando vado a generare un nuovo ordine dall'omonima maschera, nella sua sottomaschera descrivo il dettaglio dell'ordine (gli oggetti che vengono ordinati). Ho la necessità di associare un mio prodotto ad un nome che mi da il cliente. Quello che avevo in mente era di inserire il nome del "dettaglio prodotto" e, grazie al filtro su filtro, associargli il mio prodotto - quindi andando ad individuare quel solo ed unico prodotto che rappresenta ciò che chiede il cliente. Tramite una casella combinata riesco ad avere l'enorme lista di prodotti, essendo enorme ecco che viene l'esigenza sopra descritta (l'individuazione del prodotto). La mia domanda è: qual è la miglior strada da intraprendere per risolvere questo problema? Posso applicare filtri su filtri? Devo impostare delle query? Ho letto anche di queste ComboBox, le devo programmare (sempre che si programmino) in ambiente maschera?
Ho le idee un po' confuse spero in un vostro chiarimento per procedere e superare questo ostacolo.

Grazie e buona Domenica.
Andrea.

17 Risposte

  • Re: Filtri a cascata per scelta record

    Buona domenica,
    mi sembra di capire che, qualunque sia la soluzione da adottare, tu debba in ogni caso scegliere il prodotto da associare al nome fornito dal cliente.
    Il prodotto da associare lo prendi dalla tabella Prodotti che contiene moltissimi record quindi hai bisogno di filtrarla in diversi campi.
    Se quanto ho scritto é una corretta interpretazione allora forse conviene "programmare" una combo x ogni campo che usi per filtrare. A tale scopo è necessario considerare secla selezione effettuata in una combo influenza i valori selezionabili nelle altre... Questo puoi saperlo solo tu.
    Per "programmare" le combo credo tu intenda il settaggio dei valori selezionabili nell'elenco a discesa di ciascuna. Per definire tale elenco devi agire sulle proprietà di ciascun controllo (la combo é per l'appunto un controllo)... per aiutarti potresti aggiungere una combo con composizione automatica scegliendo di farla "popolare" con i dati della tabella prodotti. Una volta creata potresti studiarne le proprietà e agire per modificare le medesime per adattarle alle tue necessità... Comincia a vedere se in questo modo riesci ad individuare le proprietà modificate dalla composizione guidata... Poi vedremo come fare per adattarle...
  • Re: Filtri a cascata per scelta record

    Non conosciamo i dettagli della tua "composizione/combinazione filtri" per arrivare al singolo IDProdotto. Generalmente io gestisco la cosa così (forse Angelo_Tbp indica la stessa via):
    A) Creo una normale casella combinata che cerchi di mostrare il campo più significativo, oppure una concatenazione di campi che rendino la selezione significativa.
    B) Quando la selezione significativa non è realizzabile, l'utente non ricorda tale valore, predispondo un pulsante che apre una maschera con una piccola procedura guidata che fa leva sul meccanismo di "caselle combinate a cascata" (leggi numerosi thread con queste parole chiave per capire di cosa si tratta) tale da arrivare al IDProdotto finale.
  • Re: Filtri a cascata per scelta record

    Vedi se questo ti aiuta, o ti da uno spunto da cui partire:

    Caselle combinate a cascata con scelta (Tutto)
    http://www.alfainfo.it/caselle-combinate-cascata-con-scelta-tutto/
  • Re: Filtri a cascata per scelta record

    Buongiorno,
    innanzitutto vi ringrazio per le celeri risposte.
    mi sembra di capire che, qualunque sia la soluzione da adottare, tu debba in ogni caso scegliere il prodotto da associare al nome fornito dal cliente.
    Esattamente.
    Se quanto ho scritto é una corretta interpretazione allora forse conviene "programmare" una combo x ogni campo che usi per filtrare. A tale scopo è necessario considerare se la selezione effettuata in una combo influenza i valori selezionabili nelle altre... Questo puoi saperlo solo tu.
    A) Creo una normale casella combinata che cerchi di mostrare il campo più significativo, oppure una concatenazione di campi che rendano la selezione significativa.
    In merito a queste due considerazioni credo di esser giunto ad una soluzione (sempre che sia percorribile):
    creare una combo che mi consente di associare il prodotto selezionato al'item ordinato dal cliente, tale combo è filtrata grazie ad altre combo, le quali mi daranno un valore influenzato dalla combo precedente. In sostanza, nella maschera, individuo una zona di selezione dedicata ai soli filtraggi, nella sotto maschera ho la combo che mi consente di fare l'associazione "prodotto selezionato - item ordinato". Può essere una soluzione percorribile?
    Vedi se questo ti aiuta, o ti da uno spunto da cui partire:
    - Ti ringrazio, ho dato un'occhiata veloce e sembra che ci sia scritto quanto ho trovato in alcuni video tutorial; in serata gli do una lettura più attenta.

    Grazie e buona giornata,
    Andrea.
  • Re: Filtri a cascata per scelta record

    OsvaldoLaviosa ha scritto:


    B) Quando la selezione significativa non è realizzabile, l'utente non ricorda tale valore, predispondo un pulsante che apre una maschera con una piccola procedura guidata che fa leva sul meccanismo di "caselle combinate a cascata" (leggi numerosi thread con queste parole chiave per capire di cosa si tratta) tale da arrivare al IDProdotto finale.
    Anche l'idea di Osvaldo non é male... Comunque, venendo alla scelta:

    Andrea_7 ha scritto:


    In merito a queste due considerazioni credo di esser giunto ad una soluzione (sempre che sia percorribile):
    creare una combo che mi consente di associare il prodotto selezionato al'item ordinato dal cliente, tale combo è filtrata grazie ad altre combo, le quali mi daranno un valore influenzato dalla combo precedente. In sostanza, nella maschera, individuo una zona di selezione dedicata ai soli filtraggi, nella sotto maschera ho la combo che mi consente di fare l'associazione "prodotto selezionato - item ordinato". Può essere una soluzione percorribile?
    Credo sia percorribile.
    Ti servirà creare le combo avendo cura di settare le proprietà in maniera appropriata… facciamo un esempio… supponi di avere 4 combo (A,B,C e D) ognuna filtrerà uno specifico campo della tabella prodotti.
    Andiamo alle proprietà…
    ComboA
    - Origine record basata solo su tabella prodotti e, mediante query, lasci solo il primo campo da filtrare.
    - Una sola colonna
    - Colonna predefinita 1
    Combo B
    - Origine record basata solo su tabella prodotti e, mediante query, metti il secondo campo da filtrare e il primo campo (quello della combo A) settando il criterio in modo da farlo corrispondere alla combo A
    - 2 colonne
    - Colonna predefinita: quella del campoB
    - Larghezza colonne: Setta a 0 quella del campo A
    Combo C
    Tutto come combo B ma sostituisci
    - A con B
    - B con C
    - Secondo con terzo
    - Primo con secondo

    Combo D
    Come sopra...

    Poi dovrai usare il requery per ricalcolare l'origine record delle combo ogni qualvolta selezioni un valore da una "gerarchicamente sovraordinata".. Il requery dovrà aggiornare anche la sottomaschera di seguito descritta

    La sottomaschera che visualizza i prodotti dovrà essere basata sull omonima tabella e, mediante query, i campi filtrati devono avere criterio uguale ai valori selezionati nelle combo.
  • Re: Filtri a cascata per scelta record

    Fermo restando tutto quanto scritto nel post precedente faccio una riflessione su

    Andrea_7 ha scritto:


    In sostanza, nella maschera, individuo una zona di selezione dedicata ai soli filtraggi, nella sotto maschera ho la combo che mi consente di fare l'associazione "prodotto selezionato - item ordinato".
    Secondo me la "zona filtraggi" deve comprendere anche la combo dove selezionerai il prodotto finale che poi verra associato al nome fornito dall'utente. L'unione tra prodotto e nominativo potrà essere "cristallizzata" facendo settare, al click di un pulsante, il campo prodotto della sottomaschera, uguale al valore selezionato nell'ultima combo... A patto che in quest'ultima, la colonna predefinita si riferisca ad un valore valido ad identificare il prodotto... Solitamente il campo ID
  • Re: Filtri a cascata per scelta record

    Buonasera,

    gibra ha scritto:


    Vedi se questo ti aiuta, o ti da uno spunto da cui partire:

    Caselle combinate a cascata con scelta (Tutto)
    http://www.alfainfo.it/caselle-combinate-cascata-con-scelta-tutto/
    Ho dato una lettura più attenta e chi ha scritto quanto nel link indicato è proprio lo stesso che ho trovato cercando su Youtube (difatti mi rimanda al suo canale); se quanto descritto può essere applicata come soluzione al mio caso (ero già tentato a provare), sicuramente farò un tentativo.

    Angelo_Tbp ha scritto:


    Secondo me la "zona filtraggi" deve comprendere anche la combo dove selezionerai il prodotto finale che poi verra associato al nome fornito dall'utente. L'unione tra prodotto e nominativo potrà essere "cristallizzata" facendo settare, al click di un pulsante, il campo prodotto della sottomaschera, uguale al valore selezionato nell'ultima combo... A patto che in quest'ultima, la colonna predefinita si riferisca ad un valore valido ad identificare il prodotto... Solitamente il campo ID
    Forse ho capito cosa intendi e come idea non sembra affatto male, prima però proverò a fare qualcosa di più semplice. Sicuramente è un'opzione di cui terrò conto. Grazie per lo spunto.

    Ancora grazie a tutti, buona serata.
    Andrea.
  • Re: Filtri a cascata per scelta record

    Andrea_7 ha scritto:


    gibra ha scritto:


    Vedi se questo ti aiuta, o ti da uno spunto da cui partire:

    Caselle combinate a cascata con scelta (Tutto)
    http://www.alfainfo.it/caselle-combinate-cascata-con-scelta-tutto/
    Ho dato una lettura più attenta e chi ha scritto quanto nel link indicato è proprio lo stesso che ho trovato cercando su Youtube (difatti mi rimanda al suo canale); se quanto descritto può essere applicata come soluzione al mio caso (ero già tentato a provare), sicuramente farò un tentativo.
    Quello che ti ho linkato è solo una traccia, ma è tutta da elaborare perché a mio avviso è molto limitata.
    Credo che a te serva qualcosa di molto più avanzato, in cui l'utente può selezionare più filtri.
    Questo mi sembra molto più interessante:

    Maschera di ricerca Flessibile nei criteri e nei Campi
  • Re: Filtri a cascata per scelta record

    Magari anche questo... pur se meno digeribile:
    http://forum.masterdrive.it/access-79/maschera-filtri-86836/
  • Re: Filtri a cascata per scelta record

    Mi sembrava strano che tu non l'avessi implementata.
    Infatti, avevo cercato sul tuo sito con 'filtro', ma la funzione di ricerca mi restituisce sempre errore.
    Non capivo perché...
  • Re: Filtri a cascata per scelta record

    Il Sito che vedi è un Mirror, che Master mi ha concesso, di fatto la conseguenza è che non è più dinamico ma sono pagine STATICHE e non funzionano più i gadget in quanto non è più basato su un DB...
  • Re: Filtri a cascata per scelta record

    Buongiorno,
    ancora grazie per le risposte.

    @Alex ha scritto:


    Magari anche questo... pur se meno digeribile:
    http://forum.masterdrive.it/access-79/maschera-filtri-86836/
    Ho scaricato quanto consigliato da Alex ma non credo rispecchi quello che devo fare io; mi sembra più un'applicazione di filtri al fine di vedere in diretta il risultato.
    Quello che devo fare io è associare un IDProdotto all'IDProdottocliente (dettaglio ordine) e, questa associazione, la posso fare con una casella combinata scegliendo tra numerosissimi prodotti oppure, grazie a 3 filtri che mi identificano 3 criteri per il quale il prodotto è univocamente descritto, scegliere l'unico che mi offre la soluzione del filtro.

    Forse (devo fare delle prove) una soluzione come descritta qualche risposta più su è più corretta? Da ignorante quale sono credo la rispecchi di più.

    Buona giornata,
    Andrea.
  • Re: Filtri a cascata per scelta record

    Andrea_7 ha scritto:


    non credo rispecchi quello che devo fare io; mi sembra più un'applicazione di filtri al fine di vedere in diretta il risultato.
    e sarebbe proprio quello che serve a te, a mio avviso.
    Solo che l'esempio di Alex, molto più avanzato, non calza perfettamente le tue esigenze, ma si presta di più ad una filtro per visualizzare report e/o griglie, ovvero un 'insieme' di dati.
    Mentre, nel tuo caso devi individuare una riga sola, tenendo conto che l'utente non può certo ricordare a memoria tutti i valori, quindi la ricerca deve essere dinamica (leggi sotto)

    Andrea_7 ha scritto:


    Quello che devo fare io è associare un IDProdotto all'IDProdottocliente (dettaglio ordine) e, questa associazione, la posso fare con una casella combinata scegliendo tra numerosissimi prodotti oppure, grazie a 3 filtri che mi identificano 3 criteri per il quale il prodotto è univocamente descritto, scegliere l'unico che mi offre la soluzione del filtro.
    Sinceramente non capisco cosa intendi con la frase: [associare associare un IDProdotto all'IDProdottocliente].
    Io so solo che nei gestionali, la norma è creare una finestra di ricerca rapida, che consenta all'utente di individuare la riga da inserire (in un DDT, Ordine, Fattura, ecc).

    Questo tipo di Finestra di Selezione (è così che viene chiamata) deve essere dinamica, ovvero man mano che l'utente digita dei caratteri nei campi filtro, le righe proposte vengono appunto 'filtrate'.
    Quando l'utente ha individuato l'articolo, lo seleziona e verrà aggiunto alle righe dell'ordine, ma non c'è alcuna associazione diretta, non deve mai esservi, i dati dell'articolo devono semplicemente essere copiati nella griglia delle righe. Significa, per essere più precisi, che tali righe diventano uno 'storico' a sé stante, dissociato dall'anagrafica articoli.

    Una classica Finestra di Selezione dinamica la puoi vedere in questa pagina:

    ADO DataProject 2.0.1
    http://nuke.vbcorner.net/Projects/VB60/ADODataProject201/tabid/78/language/en-US/Default.aspx
  • Re: Filtri a cascata per scelta record

    In quell'esempio non calzante, se si seleziona "Estensivo" in basso a Sinistra, si abilita una TextBox, che effettua la RICERCA del "digitato" su TUTTI I CAMPI...
    Volendo quell'algoritmo, può risultare UTILE...
Devi accedere o registrarti per scrivere nel forum
17 risposte