Ricerca con filtri su più valori

di il
4 risposte

Ricerca con filtri su più valori

Buongiorno a tutti,
vorrei chiedervi un consiglio per risolvere un problema sul db che sto facendo.

Ho inserito una maschera nella quale sono presenti:
- 2 cbo
- 3 caselle di testo
- 1 casella di riepilogo
attraverso le quali effettuare delle ricerche in una query.

Ho trovato un codice in VBA con il quale è possibile creare una "query dinamica", ossia generare una query in cui la clausola WHERE viene scritta in funzione della ricerca che si vuole effettuare (link al video dal quale ho trovato questa soluzione: https://www.youtube.com/watch?v=Fnq7j-5l0D)
Il problema è che richiede di considerare tutti i possibili casi di ricerca. Nel suo caso sono relativamente pochi perché effettua la ricerca sulla base di condizioni che si escludono a vicenda, mentre nel mio caso nessuna condizione esclude le altre.
Quindi se seguo il suo ragionamento avrei 2^6=64 combinazioni possibili, ossia non posso gestirle tutte.
In generale la clausola WHERE viene scritta come:
ClausolaWhere = "WHERE tabella.ID= " & Chr$(34) & IDString & Chr$(34)
dove IDString è la stringa che ho creato a inizio codice e in cui vado a scrivere l'ID selezionato dalla cbo.

Ho pensato di poter inserire la condizione "Like" all'interno del codice, in modo tale che, se avessi una cbo vuota, andrebbe a pescare tutti i valori della query, il problema però è che non so bene come scrivere tale condizione in vba.

Ringrazio in anticipo qualsiasi consiglio vogliate darmi.
Un saluto e buone feste.

4 Risposte

  • Re: Ricerca con filtri su più valori

    Prendi quello che scrivo come "opinione personale".
    Vuoi che mi ci sono impantanato anch'io in numerosissime combinazioni di AND e OR che volevo prendere in considerazione, mettendo in piedi altrettante query. Vuoi che ci sono molte altre più intrigate combinazioni che potrebbero ancora essere prese in considerazione. Se dovessi riprogettare tutto quel mio ex-casino non saprei rifarlo.
    Io preferisco usare il "filtro in base a maschera" e giocarmelo come mi pare "caso per caso".
  • Re: Ricerca con filtri su più valori

    OsvaldoLaviosa ha scritto:


    Prendi quello che scrivo come "opinione personale".
    Vuoi che mi ci sono impantanato anch'io in numerosissime combinazioni di AND e OR che volevo prendere in considerazione, mettendo in piedi altrettante query. Vuoi che ci sono molte altre più intrigate combinazioni che potrebbero ancora essere prese in considerazione. Se dovessi riprogettare tutto quel mio ex-casino non saprei rifarlo.
    Io preferisco usare il "filtro in base a maschera" e giocarmelo come mi pare "caso per caso".
    Temevo questa risposta
    Fosse per me userei questo metodo senza nessun problema. Il fatto è che non dovrò utilizzarlo io e chi dovrà usarlo può non avere questa dimestichezza. Per questo cercavo una soluzione più immediata nell'uso (meno nella programmazione...).
  • Re: Ricerca con filtri su più valori

    Sempre a parer mio, ritengo che quel "abbozzo" di filtro che avresti progettato

    atarmi ha scritto:


    Ho inserito una maschera nella quale sono presenti:
    - 2 cbo
    - 3 caselle di testo
    - 1 casella di riepilogo
    attraverso le quali effettuare delle ricerche in una query.
    per un utente "ignorante" appare più complicato da usare rispetto al "filtro in base a maschera".

    Vado avanti a mia ruota libera. Da quel che ci ho capito io sull'uso di filtri da parte dell'"utente ignorante" è preferibile guidarlo in ricerche "mono-valore" volta per volta, passo-passo. Per ricerche più complesse, se l'utente ne fa più di una e confronta i dati anche a mano, non sarebbe poi la fine del mondo.
    Comunque dipende anche dal contesto e dal "degustibus".
  • Re: Ricerca con filtri su più valori

    atarmi ha scritto:


    Temevo questa risposta
    Fosse per me userei questo metodo senza nessun problema. Il fatto è che non dovrò utilizzarlo io e chi dovrà usarlo può non avere questa dimestichezza. Per questo cercavo una soluzione più immediata nell'uso (meno nella programmazione...).
    Come diverse volte si è provato a spiegare gli strumenti che l'interfaccia mette a disposizione si dividono in 2 parti... e lo sviluppatore ne deve tener conto.
    Per lo sviluppatore e per l'Utente.
    Alcuni strumenti sono a disposizione dello sviluppatore, ma non dell'eventuale utente utilizzatore e questo per 2 motivi:
    1° Non sono CONTROLLABILI (per chi sviluppa e questo è come l'acqua santa per il diavolo)
    2° Non vengono distribuiti con il RUNTIME ( e questo va da se che ...)

    Conseguenza è che uno sviluppatore, quindi colui che poi fa usare il proprio applicativo ad altri, deve EVITARE queste cose.
    Prova, se ti va, ad usare questo mio ADDIN
    http://forum.masterdrive.it/access-79/maschera-filtri-86836/
    In sostanza è una Maschera GENERALIZZATA che si apre Popup sopra una maschera generica(qualsiasi)... e consente di attuare Filtri.
    E' abbastanza semplice, la importi ed importi la funzione OpenFILTER che trovi nel modulo basEXPORT, se non ricordo male,... che si usa come la nativa.
    Per aprirla basta che chiami dalla Form su cui vuoi applicare i FILTRI, tramite Button la funzione:
       Call OpenFILTER
    Dovrebbe fare tutto lei...

    Un'altro esempio può essere questo:


    Di fatto la costruzione di un sistema di FILTRI è semplice... sia con AND che OR, ma il rischio è che sia rigido...
    Costruire una stringa di CRITERIO è banale si può valutare una cosa simile
    
    Dim strWH As String
    If Len(Me!Controllo1.Value & vbNullstring)>0 Then strWH=strWH & "Campo1=" & Me!Controllo1.Value& " AND "
    If Len(Me!Controllo2.Value & vbNullstring)>0 Then strWH=strWH & "Campo2=" & Me!Controllo2.Value & " AND "
    .... ' aggiungi le altre 1000 condizioni...
    If Len(strWH)>0 then strWH=Mid$(strWH,1,Len(strWH)-5)
    Me.Filter=strWH
    Me.FilterON=True
    Chiaramente se conosci il Tipo di Campo sai anche come FORMATTARE la stringa del Valore del criterio... sia una Data(#...#) o un Testo(Apicetti) ecc...
    PEr il fatto di mettere in AND o OR, per farti capire è come quello sopra...

    Il 2° link che ti ho proposto è meno evoluto, ma forse più scolastico...
Devi accedere o registrarti per scrivere nel forum
4 risposte