Filtro data tramite casella combinata dei mesi dell'anno

di il
6 risposte

Filtro data tramite casella combinata dei mesi dell'anno

Gentilissimi,
dovrei filtrare dei record in base al loro campo DATA (DD/MM/YY).
L'utente sceglie solamente il mese (MM) da una combo box (elenco dei mesi: gen, feb, mar, apr, ...)
mentre l'anno (YY) è scelto dall'algoritmo ed è quello corrente (2020).
Il risultato deve essere l'elenco dei record il cui campo DATA contiene il mese selezionato
e naturalmente l'anno corrente (2020), a prescindere dal giorno (DD).
Ringrazio chiunque possa darmi un canovaccio di codice su cui posso mettere le mani ...
Saluti
Gianni

6 Risposte

  • Re: Filtro data tramite casella combinata dei mesi dell'anno

    Consideriamo che tu hai una maschera M e la Combo. Il valore mese selezionato sarà quindi
    [Maschere]![M]![Combo]
    oppure
    Forms!M!Combo.Value
    se devi usare VBA.
    Ora prova a leggere da qui
    https://support.office.com/it-it/article/esempi-di-criteri-di-query-3197228c-8684-4552-ac03-aba746fb29d8#bm4
    in particolare su "Criteri per campi Data/Ora" e il caso "Contengono una data del mese corrente".
  • Re: Filtro data tramite casella combinata dei mesi dell'anno

    strambotto ha scritto:


    Gentilissimi,
    dovrei filtrare dei record in base al loro campo DATA (DD/MM/YY).
    L'utente sceglie solamente il mese (MM) da una combo box (elenco dei mesi: gen, feb, mar, apr, ...)
    mentre l'anno (YY) è scelto dall'algoritmo ed è quello corrente (2020).
    Il risultato deve essere l'elenco dei record il cui campo DATA contiene il mese selezionato
    e naturalmente l'anno corrente (2020), a prescindere dal giorno (DD).
    Ringrazio chiunque possa darmi un canovaccio di codice su cui posso mettere le mani ...
    Saluti
    Gianni
    Conviene che la Combo abbia 2 Colonne, una Nascosta con il Numerale del Mese, e Colonna associata la 1°:
    1;Gennaio
    2;Febbraio
    ecc...

    In questo mdoo il filtro si può comporre in modo molto più agevole...!
    La Data la si converte in Formato per il confronto:
    
    ' Scritto in SQL non QBE:
    WHERE Format('mm/yyyy',[CampoData]) = Format('mm',Forms!NomeForm!NomeCombo) & Format('yyyy',Year(Date()))
    
    ' Scritto in QBE:
    Format("mm/aaaa";[CampoData]) = Format("mm";Maschera!NomeMaschera!NomeCombo) & Format("aaaa";Year(Date()))
    Oppure si compone il Criterio, ma è meno efficiente:
    
    ' Scritto in SQL non QBE:
    WHERE month([CampoData]) = Forms!NomeForm!NomeCombo AND year([CampoData])=Year(Date())
  • Re: Filtro data tramite casella combinata dei mesi dell'anno

    OsvaldoLaviosa ha scritto:


    Consideriamo che tu hai una maschera M e la Combo. Il valore mese selezionato sarà quindi
    [Maschere]![M]![Combo]
    oppure
    Forms!M!Combo.Value
    se devi usare VBA.
    Ora prova a leggere da qui
    https://support.office.com/it-it/article/esempi-di-criteri-di-query-3197228c-8684-4552-ac03-aba746fb29d8#bm4
    in particolare su "Criteri per campi Data/Ora" e il caso "Contengono una data del mese corrente".
    Ti ringrazio, adesso è chiarissimo e con i criteri delle query di Access funziona tutto
  • Re: Filtro data tramite casella combinata dei mesi dell'anno

    @Alex ha scritto:


    strambotto ha scritto:


    Gentilissimi,
    dovrei filtrare dei record in base al loro campo DATA (DD/MM/YY).
    L'utente sceglie solamente il mese (MM) da una combo box (elenco dei mesi: gen, feb, mar, apr, ...)
    mentre l'anno (YY) è scelto dall'algoritmo ed è quello corrente (2020).
    Il risultato deve essere l'elenco dei record il cui campo DATA contiene il mese selezionato
    e naturalmente l'anno corrente (2020), a prescindere dal giorno (DD).
    Ringrazio chiunque possa darmi un canovaccio di codice su cui posso mettere le mani ...
    Saluti
    Gianni
    Conviene che la Combo abbia 2 Colonne, una Nascosta con il Numerale del Mese, e Colonna associata la 1°:
    1;Gennaio
    2;Febbraio
    ecc...

    In questo mdoo il filtro si può comporre in modo molto più agevole...!

    che differenza c'è tra QBE e non QBE? il codice sottostante lo uso nel codice delle routine VBA o altrove?

    La Data la si converte in Formato per il confronto:
    
    
    
    ' Scritto in SQL non QBE:
    WHERE Format('mm/yyyy',[CampoData]) = Format('mm',Forms!NomeForm!NomeCombo) & Format('yyyy',Year(Date()))
    
    ' Scritto in QBE:
    Format("mm/aaaa";[CampoData]) = Format("mm";Maschera!NomeMaschera!NomeCombo) & Format("aaaa";Year(Date()))
    Questo sotto è chiaro, ho adoperato i criteri nella query assistita di Access e tutto fnziona:

    Oppure si compone il Criterio, ma è meno efficiente:
    
    
    
    ' Scritto in SQL non QBE:
    WHERE month([CampoData]) = Forms!NomeForm!NomeCombo AND year([CampoData])=Year(Date())
    Grazie ancora!
  • Re: Filtro data tramite casella combinata dei mesi dell'anno

    strambotto ha scritto:


    Che differenza c'è tra QBE e non QBE? il codice sottostante lo uso nel codice delle routine VBA o altrove?
    https://it.wikipedia.org/wiki/Query_by_Exampl
    Il QBE è la VISUALIZZAZIONE STRUTTURA query. La si usa se non si ha molta dimistichezza con SQL. C'è da dire pure che spesso le sintassi VBA e SQL non sempre sono equivalenti e occorre trovare opportuni stratagemmi per renderli compatibili.
  • Re: Filtro data tramite casella combinata dei mesi dell'anno

    Nel mio caso ho usato la Visualizzazione struttura. Access "mi ha suggerito" di creare due campi "calcolati": uno per il mese (dove nel criterio faccio il confronto con il valore della mia casella combinata) e uno per l'anno (dove il criterio è il confronto con l'anno corrente Year (Date()).
    Funziona ma mi sarebbe piaciuto fare un unico criterio con AND ....
    Ciao
    Gianni
Devi accedere o registrarti per scrivere nel forum
6 risposte