Criterio Filtro Query complesso [RISOLTO]

di il
5 risposte

Criterio Filtro Query complesso [RISOLTO]

Buonasera,
ho la necessità di filtrare in una query un campo utilizzando più condizioni, quindi unsando gli Or.
Ho una maschera continua associata ad una query.
Nella testata della maschera ho delle caselle di testo non associate per applicare i filtri.

Per agevolare l'operatore nell'inserimento dei valori per filtrare un solo campo, glieli faccio inserire separati da una virgola (es. 1,2,3) ed alla pressione di un pulsante per applicare il filtro, prima di rilanciare la query ,tramite la funzione replace, converto quella stringa in 1 Or 2 Or 3 e la posiziono in un campo testo non associato invisibile. (fin qui tutto ok)
Nella query come criterio per filtrare quel campo ho messo come riferimento la casella di testo che contiene 1 Or 2 Or 3, ma al requery va in errore. (espressione non digitata correttamente o troppo complessa....)

Secondo me piazza apici da qualche parte, perchè se scrivo direttamente 1 or 2 or 3 nel criterio di quel campo per il filtro, funziona correttamente, se invece metto [Forms]![maschera1]![Testo17] (che contiene 1 Or 2 Or 3) non interpreta correttamente l'informazione e va in errore.

Grazie per un suggerimento

5 Risposte

  • Re: Criterio Filtro Query complesso [RISOLTO]

    Perchè ti complichi la vita con un marchingegno simile, quando esiste il comodissimo FILTRO IN BASE A MASCHERA?
  • Re: Criterio Filtro Query complesso [RISOLTO]

    Oppure esiste il vba proprio per fare cose del genere
  • Re: Criterio Filtro Query complesso [RISOLTO]

    Ciao e grazie per le risposte.
    La risposta sull'uso del filtro in base a maschera l'ho vista un varie occasioni in questo forum, ma non lo trovo sempre così pratico. Ho escluso questa opzione perche il dover inserire un valore alla volta alternato al click in basso per ogni "oppure" è macchinoso, sopratutto se si arriva anche a una ventina di valori, contrariamenre ad inserirli al volo tramite tastierino nomerico separati da una virgola.
    Per quanto riguarda il VBA, ho provato nei limiti del mio possibile che è già molto basso, ad esempio con me.filter, usando riferimenti a variabili o al campo testo contenente la stringa, ma senza successo.
    Magari spiegatemi solo perchè se nel criterio del campo della query scrivo direttamente 1 or 2 or 3 funziona mentre se inserisco il riferimento alla casella di testo che ha come testo la stessa stringa non funzia..grazie
  • Re: Criterio Filtro Query complesso [RISOLTO]

    VelenoXyZ ha scritto:


    ...
    Magari spiegatemi solo perchè se nel criterio del campo della query scrivo direttamente 1 or 2 or 3 funziona mentre se inserisco il riferimento alla casella di testo che ha come testo la stessa stringa non funzia..grazie
    Perché, secondo me, se lo scrivi nei criteri della query, presumibilmente dalla finestra QBE (quella classica da query, dove si usa molto in mouse, per capirci) Access interviene "molto" per formattare bene il criterio, mettendo il doppio apice dove serve (o togliendolo dove non serve). Una volta visualizzata la query, torna in visualizzazione struttura e guarda se quello che avevi scritto tu è inalterato o, appunto, Access c'ha messo le mani.
    Ho proprio sotto mano alcuni thread (appena ripescato) dove ci sono parecchi link ed altri suggerimenti. Con un po' di vba puoi cavartela
    http://forum.masterdrive.it/access-79/caselle-testo-per-ricerca-record-88977/#post325044
    se selezioni una serie di valori, prova ad usare la sintassi
    WHERE [campo] IN (n1, n2, n3, n4, ... nx)
    invece di Or, forse è un po' più facile da gestire (e da costruire, se segui i link che trovi). Con particolare attenzione al fatto se si tratta di numeri da considerare come tali o numeri che in realtà vanno trattati come stringhe.
  • Re: Criterio Filtro Query complesso [RISOLTO]

    Grazie siete stati illuminanti.
    Alla fine ho seguito un po' il concetto dell'esempio dei pulsanti dei mesi.
    Invece di trasformare la virgola in Or, ho mantenuto la stringa così com'è e l'ho usata nell'IN della condizione WHERE scrivendo in VBA l'SQL.
    ho attribuito ad una variabile il contenuto della casella di testo con i valori separati dalla virgola.

    umselected = um.Value
    poi scritta l'istruzione
    Set DB = CurrentDb()
    Set Q = DB.QueryDefs("DETTAGLIO_COMMESSA")
    Q.SQL ="SELECT * FROM ORDFABD WHERE [PROG] IN (" & umselected & ");"
    Q.Close

    Grazie
Devi accedere o registrarti per scrivere nel forum
5 risposte