Filtro su query

di il
28 risposte

Filtro su query

Su una query di selezione ho su un campo un criterio che è il valore che leggo da una casella di testo in una maschera.

la casella di testo viene popolata scegliendo valori (ID) da una casella di riepilogo a selezione multipla

Se scelgo un solo campo (sulla txt leggo es.: 10) la query funziona regolarmente; se scelgo più campi (sulla txt leggo es: 10 Or 12) la query restituisce 0 risultati.

Se copio/incollo a mano il valore della txt nel campo criteri della query, la query funziona regolarmente

Non riesco a venirne a capo

Grazie in anticipo

28 Risposte

  • Re: Filtro su query

    18/10/2023 - PocoPratico ha scritto:


    Su una query di selezione ho su un campo un criterio che è il valore che leggo da una casella di testo in una maschera.

    la casella di testo viene popolata scegliendo valori (ID) da una casella di riepilogo a selezione multipla

    Se scelgo un solo campo (sulla txt leggo es.: 10) la query funziona regolarmente; se scelgo più campi (sulla txt leggo es: 10 Or 12) la query restituisce 0 risultati.

    Se copio/incollo a mano il valore della txt nel campo criteri della query, la query funziona regolarmente

    Non riesco a venirne a capo

    Grazie in anticipo

    Mostra la query

  • Re: Filtro su query

    18/10/2023 - PocoPratico ha scritto:


    sulla txt leggo es: 10 Or 12) la query restituisce 0 risultati.

    Quando scrivi 10 ti cerca il valore “10”

    Se scrivi pippo cerca il valore “pippo”

    Stai scrivendo 10 or 12 ti cerca il valore “10 or 12”

    In quel vampo hai un record con valore “10 or 12”?

  • Re: Filtro su query

    18/10/2023 - PocoPratico ha scritto:


    Se copio/incollo a mano il valore della txt nel campo criteri della query, la query funziona regolarmente

    Ciao,

    in quel modo non puoi farlo …

    stai passando una stringa e non dei parametri che ovviamente è cosa ben diversa se fai il copia  incolla della stessa sui criteri.

  • Re: Filtro su query

    18/10/2023 - sihsandrea ha scritto:


    Mostra la query

  • Re: Filtro su query

    18/10/2023 - sihsandrea ha scritto:


    18/10/20- PocoPratico ha scritto:

    Quando scrivi 10 ti cerca il valore “10”

    Se scrivi pippo cerca il valore “pippo”

    Stai scrivendo 10 or 12 ti cerca il valore “10 or 12”

    In quel vampo hai un record con valore “10 or 12”?

    si, è una casella di testo che compilo tramite vba.

    “10 Or 12” (viroglette a parte) è quello che dovrebbe comparire nel campo “Criteri” della mia query….

  • Re: Filtro su query

    18/10/2023 - By65Franco ha scritto:


    18/10/2023 - PocoPratico ha scritto:


    Se copio/incollo a mano il valore della txt nel campo criteri della query, la query funziona regolarmente

    Ciao,

    in quel modo non puoi farlo …

    stai passando una stringa e non dei parametri che ovviamente è cosa ben diversa se fai il copia  incolla della stessa sui criteri.

    so che non posso incollare a mano, è una cosa che ho fatto solo per verificare che la sintassi fosse giusta.

    Non riesco comunque a capire perchè il valore che vedo scritto nel campo linkato è esattamente quello che dovrebbe esserci scritto nel Criterio della query e invece non funziona; e ancor meno capisco perchè se il numero da passare è uno solo funziona, se ce ne sono di più invece no

    Sicuro che mi sfugge qualcosa dato il mio livello poco più che basico, ma non capisco cosa

  • Re: Filtro su query

    18/10/2023 - PocoPratico ha scritto:


    Non riesco comunque a capire perchè il valore che vedo scritto nel campo linkato è esattamente quello che dovrebbe esserci scritto nel Criterio della query e invece non funziona; e ancor meno capisco perchè se il numero da passare è uno solo funziona, se ce ne sono di più invece no

    Sicuro che mi sfugge qualcosa dato il mio livello poco più che basico, ma non capisco cosa

    Certo che ti sfugge qualcosa, ritorna in te… ;-))   stai passando una stringa che per la query non è un elenco valori … ripeto sono due cose ben diverse

    Nei criteri non trasforma la stringa pasata dalla form in 
    numero + operatore + numero  … che sarebbe come dire 10 Or 12

    Ma gli stai passando una stringa che sarebbe questa :  “10 Or 12”

    Quindi nei criteri ti cerca la stringa “10 Or 12” e non una espressione 10 Or 12

    Capito mi hai ? ;-)) 


    Che poi se ho capito bene è la stessa cosa che ti diceva Andrea.

  • Re: Filtro su query

    18/10/2023 - PocoPratico ha scritto:


    Sicuro che mi sfugge qualcosa dato il mio livello poco più che basico, ma non capisco cosa

    Capito perchè odio le Query e vanno solo usate come usa e getta ? ;)) 

    Quindi ti chiedo , ma non puoi buttar via la query e costruirti la Select da Vba ?

    A cosa ti serve questa query ? cosa ci fai ? dove la devi adoperare ?  

  • Re: Filtro su query

    Innanzitutto se il tuo intento è di inserire Criteri Multpli la sintassi da usare cambia… l'ideale è sempre usare una ListBox per poter selezionare Items in modalità Multipla-Estesa.

    Diciamo che se la sintassi per un singolo Item è questa:

    SELECT * FROM T1 WHERE IDCommessa=Forms!NomeForm!NomeTuaTextBox

    Se i criteri sono 2 la sintassi diverrebbe questa:

    SELECT * FROM T1 WHERE IDCommessa=Forms!NomeForm!NomeTuaTextBox1 OR IDCommessa=Forms!NomeForm!NomeTuaTextBox2
    quindi cosi:
    SELECT * FROM T1 WHERE IDCommessa=356 OR IDCommessa=475

    Come vedi ben lontano da quanto hai fatto che in sostanza è errato.

    Se i criteri poi fossero 25, la cosa diventa troppo lunga, e si preferisce usare la CLAUSOLA IN, così:

    SELECT * FROM T1 WHERE IDCommessa IN (356,387,456,521,ecc...)

    In questo senso potresti usare sempre una TextBox ma devi ricostruire il criterio, oppure FILTRARE il RS di ListBox con il Criterio

    Se tu pertanto nella TextBox scrivessi:

    356,387,456,521

    Ti basterebbe filtrare il RS

    Dim rs	AS DAO.Recordset
    Dim rstFiltered As DAO.Recordset
    Set rs=Me!NomeListBox.Recordset
    rs.Filter = "IDCommessa = (" & Me!TuaTextBox & ")" 
    Set rstFiltered = rs.OpenRecordset
    Set Me!NomeListBox.Recordset=rstFiltered 

    Tuttavia questo stralcio di codice non funzionerà correttamente in quanto va conservato il RS originale per poter gestire la variazione del Filtro… e questo dipende dalla tua autonomia nel scrivere il codice.

    La cosa più semplice è formattare la stringa SQL della Query di origine della ListBox:

    Dim qdf As DAO.Querydef
    Set qdf=DbEngine(0)(0).Querydefs("NomeTuaQuery")
    qdf.SQL="SELECT * FROM T1 WHERE IDCommessa IN (" & Me!TuaTextBox & ")"
    Me!NomeListBox.Requery

    Se la ListBox non ha la Query compilata e salvata si fa così:

    Me!NomeListBox.RowSource="SELECT * FROM T1 WHERE IDCommessa IN (" & Me!TuaTextBox & ")"

    Ma devi sempre mettere dei criteri di validazione del codice…

  • Re: Filtro su query

    18/10/2023 - @Alex ha scritto:


    Innanzitutto se il tuo intento è di inserire Criteri Multpli la sintassi da usare cambia…

    Ciao Alex, come va, tutto bene ? 

    Vedi che alla fine, come dicevo l'altro giorno, ho ragione di odiare (ma non disprezzare) le Query con i loro limiti ? 
    Certo, sono comode, ma si fa prima da codice Vba … ;-))   ….solo una battuta ;-)

    A proposito, ma Willy ? non lo vedo più nel Forum, hai notizie ? 

  • Re: Filtro su query

    Ciao Franco, si tutto bene.

    Purtroppo non ho notizie di Willy, non siamo in contatto se non nel Forum ed in effetti è da diverso tempo che manca.

  • Re: Filtro su query

    18/10/2023 - @Alex ha scritto:


    Ciao Franco, si tutto bene.

    Purtroppo non ho notizie di Willy, non siamo in contatto se non nel Forum ed in effetti è da diverso tempo che manca.

    ohi ,  mannaggia… avevo la sua Mail una volta , ma non la ritrovo più negli appunti del vecchio forum ;-(   

    Dopo ci riguardo.  

    Un salutone e grazie !

  • Re: Filtro su query

    18/10/2023 - PocoPratico ha scritto:


    si, è una casella di testo che compilo tramite vba.

    “10 Or 12” (viroglette a parte) è quello che dovrebbe comparire nel campo “Criteri” della mia query….

    Ti hanno risposto in tanti…

    Mi riposo. A quest'ora, oggi, vedo numeri e non vorrei darli…

  • Re: Filtro su query

    18/10/2023 - sihsandrea ha scritto:


    Ti hanno risposto in tanti…

    Mi riposo. A quest'ora, oggi, vedo numeri e non vorrei darli…

    Ciao,

    ma guarda, ti dico che se sono numeri buoni sarebbe meglio condividerli  (io me li gioco, non si sa mai…)      ;-))

    Buon riposo! 

    ;-)

Devi accedere o registrarti per scrivere nel forum
28 risposte