Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65

    (ACCESS) Filtrare query senza filtro ma con variabili di una selezione multipla.

    (ACCESS) Filtrare query senza filtro ma con variabili di una selezione multipla.

    Salve a tutti.
    Ho un problema da risolvere per fare un piccolo motore di ricerca che potrei risolvere con un filtro di una query.
    In verità non sono in grado di scrivere il codice per costruire un filtro complesso e quindi per rendere "modulare" e di facile modificabilità la query, la maschera e i report, voglio evitare di scrivere la sql con righe di codice in VBA creando delle query parametriche basate unicamente su caselle di testo, selezioni multiple, ecc di una form.

    Per semplificare diciamo che ho un Db con 2 tabelle.
    Tabella "iscritti" è composta come segue:
    IDiscritti codice
    1 PA
    2 MM05
    ecc ecc

    Tabella "Tab015" è composta come segue:
    codice Desc_codice
    PA PAGAMENTO
    MM05 Abbonamento MM05
    ecc ecc

    La form "RICERCA" ha una casella di riepilogo con una selezione multipla chiamata "codice1" (in verità ne avrà tante di caselle) che prende i dati da "Tab015".
    Con il seguente codice (ne scrivo solo una parte per fare capire) la casella "codice1" riempie una casella di testo chiamata "codice" facendo una stringa che come risultato finale avrà come valori (a seconda dei codici che seleziono) "PA, MM05, ecc".

    Private Sub codice1_Click()
    For Each varItem In Me!codice1.ItemsSelected
    Me!codice = Me!codice & Me!codice1.Column(0, varItem) & ", "
    Next varItem
    End Sub

    La form richiama con un bottone il report "ELENCO" i cui dati sono basati sulla query "00_RICERCA"
    La query "00_RICERCA" è composta come segue:
    SELECT iscritti.codice, iscritti.* FROM iscritti
    WHERE ((iscritti.codice) In ([forms]![RICERCA]![codice]))

    Ora: se nella maschera la casella "codice" ha 1 valore solo (es: MM05) la query "00_RICERCA" funziona filtrando i dati correttamente.
    Però se la casella codice ha più di 1 valore (es: PA, MM05) la query "00_RICERCA" non funziona.

    Inserendo a mano i valori PA, MM05 la query funziona perfettamente (la condizione diventa: WHERE ((iscritti.codice) In ([PA, MM05)).
    Ho provato a inserire tutti gli apici possibili e immaginabili facendo in modo che la casella di testo "codice" avesse i seguenti valori:
    "PA", "MM05"
    oppure
    'PA', 'MM05'

    Tuttavia il risultato è sempre lo stesso: funziona con un valore solo (con o senza apici)

    Penso che il problema stia nel fatto che non riesco a "formattare" le condizioni separate da una virgola come stringhe singole mentre la query mi legge la casella "codice" come un unica stringa: un po come se la stringa finale della condizione fosse "PA, MM05, ecc" e non "PA", "MM05", "ecc".

    C'è un modo per "formattare" le stringhe in modo corretto senza usare VBA (o usandolo solo in minima parte)?

    grazie per la pazienza a chiunque mi può dare una mano.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65
    Al limite se qualcuno avesse idea del codice VBA per filtrare una sql con i campi della maschera che ho inserito ...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    65
    Se qualcuno volesse cimentarsi posto il link per scaricare il Db
    DB_PROVA.mdb

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.