Vba per filtrare un campo data

di il
17 risposte

Vba per filtrare un campo data

Buonasera

con microsoft access 365 in una maschera di spostamento ho una sottomaschera che si chiama "ResiduiContratti" che ha una campo che si chiama "Fine validità CTR R" tipo data gg/mm/aa, sto cercando di creare un pulsante che con una macro vba filtra il campo "Fine validità CTR R" con la data maggiore di "Oggi".

Ho provato questo codice

Private Sub Comando68_Click()

 Dim filtro As String
   filtro = "[Fine validità CTR R] > #" & Format(Date, "dd/mm/yy") & "#"
   Me.Filter = filtro
   Me.FilterOn = True
End Sub

Ma non capisco, mi esce un messaggio di richiesta “immetti valore parametro”

Dove sbaglio?

Grazie a tutti

17 Risposte

  • Re: Vba per filtrare un campo data

    N.B.: Quando scrivi codice VBA o SQL, abbi cura di selezionarlo tutto, poi fai clic sul 4° tasto dell'editor in alto alla finestra dove si scrive il messaggio, per farlo comparire scritto così

    Dim filtro As String
       filtro = "[Fine validità CTR R] > #" & Format(Date, "dd/mm/yy") & "#"
       Me.Filter = filtro
       Me.FilterOn = True
    End Sub
    filtro = "[Fine validità CTR R] > #" & Format(Date, "dd/mm/yy") & "#"

    Non conosco la sintassi esatta per i campi di tipo data/ora, ma per fare riferimento al campo/controllo [Fine validità CTR R] devi dichiararlo con tutta la maschera che lo contiene, ossia
    Me![Fine validità CTR R]
    oppure
    Forms!NomeMaschera![Fine validità CTR R]
    oppure
    Forms!NomeMaschera!NomeSottomaschera![Fine validità CTR R] (se il controllo si trova in una sottomaschera)

  • Re: Vba per filtrare un campo data

    Grazie per la pronta risposta

    Ho modificato il codice così ma mi rimanda una finestra di richiesta “immettere codice parametro”

    Private Sub Comando68_Click()
    
      Dim filtro As String
       filtro = "[Forms]![Maschera di spostamento]![ResiduoContratti]![Fine validità CTR R] > #" & Format(Date, "dd/mm/yy") & "#"
       Me.Filter = filtro
       Me.FilterOn = True
    End Sub
  • Re: Vba per filtrare un campo data

    Sicuramente sbagli a scrivere il nome sel ccontrollo. 

    Inoltre le finestee si messaggio scrivono anche il controllo da te immesso che richiede l immissione sei dati. Quindi la soluzione la puoi conoscere solo tu.

  • Re: Vba per filtrare un campo data

    Sorvolando sulla scelta del Nome del campo che chiaramente per chi usa un database fa inorridire…

    Il suggerimento è sbagliato… il Riferimento è appunto il NOMECAMPO da usare come criterio e non il Controllo della Form, che eventualmente potrebbe essere l'oggetto che ne valorizza il valore, in ogni caso usare NomiCampi di Tabelle con Caratteri Speciali(tra cui lo Space) è da evitare a prescindere, i nomi dei campi e degli Oggetti non sono i nomi delle Tabelle di Excel… ma vanno dichiarati con un senso Tecnico e Logico.

    Altro Tema è la formattazione richiede l'eccezione anglodassone con l'inversione giorno/mese.

    La sintassi corretta è questa:

    Dim filtro As String
    filtro = "[Fine validità CTR R] > #" & Format(Date, "mm/dd/yy") & "#"
    Me.Filter = filtro
    Me.FilterOn = True
    

    Dove come “[Fine validità CTR R]” io do per scontato si sia capito che deve essere il Nome del CAMPO della Tabella/Query che contiene la Data.

    Io tuttavia semplificherei cosi:

    Dim filtro As String
    filtro = "[Fine validità CTR R] > " & cStr(cLng(Date))
    Me.Filter = filtro
    Me.FilterOn = True

    Saluti

  • Re: Vba per filtrare un campo data

    Ho provato i codici ma esce una finestra di messaggio con richiesta di parametro per “Fine validità CTR R”

    Dim filtro As String
    filtro = "[Fine validità CTR R] > #" & Format(Date, "mm/dd/yy") & "#"
    Me.Filter = filtro
    Me.FilterOn = True
    Dim filtro As String
    filtro = "[Fine validità CTR R] > " & cStr(cLng(Date))
    Me.Filter = filtro
    Me.FilterOn = True
  • Re: Vba per filtrare un campo data

    Se continua ad apparire la finestra parametro, ipotizzo:
    A) Hai scritto il nome campo erroneamente.
    B) Non vorrei che il campo di cui fai riferimento è impossibile raggiungerlo…magari si tratta di una maschera…forse chiusa.

    Io non so cosa sia una maschera di spostamento, tuttavia potresti raccontare dettagliatamente l'intero conteso?

  • Re: Vba per filtrare un campo data

    10/03/2023 - Moroeno ha scritto:


    Ho provato i codici ma esce una finestra di messaggio con richiesta di parametro per “Fine validità CTR R”

    Dim filtro As String
    filtro = "[Fine validità CTR R] > #" & Format(Date, "mm/dd/yy") & "#"
    Me.Filter = filtro
    Me.FilterOn = True
    Dim filtro As String
    filtro = "[Fine validità CTR R] > " & cStr(cLng(Date))
    Me.Filter = filtro
    Me.FilterOn = True

    Siccome ti ho indicato subito che quello deve essere il Nome del campo… tu hai verificato cosa stai usando…?
    Sei consapevole un minimo di cosa fai o no…?

  • Re: Vba per filtrare un campo data

    10/03/2023 - @Alex ha scritto:


    10/03/2023 - Moroeno ha scritto:


    Ho provato i codici ma esce una finestra di messaggio con richiesta di parametro per “Fine validità CTR R”

    Dim filtro As String
    filtro = "[Fine validità CTR R] > #" & Format(Date, "mm/dd/yy") & "#"
    Me.Filter = filtro
    Me.FilterOn = True
    Dim filtro As String
    filtro = "[Fine validità CTR R] > " & cStr(cLng(Date))
    Me.Filter = filtro
    Me.FilterOn = True

    Siccome ti ho indicato subito che quello deve essere il Nome del campo… tu hai verificato cosa stai usando…?
    Sei consapevole un minimo di cosa fai o no…?

    L'ho scritto nel primo post che "Fine validità CTR R" è un campo

    "con microsoft access 365 in una maschera di spostamento ho una sottomaschera che si chiama "ResiduiContratti" che ha un campo che si chiama "Fine validità CTR R" tipo data gg/mm/aa, sto cercando di creare un pulsante che con una macro vba filtra il campo "Fine validità CTR R" con la data maggiore di "Oggi"."

  • Re: Vba per filtrare un campo data

    10/03/2023 - OsvaldoLaviosa ha scritto:


    Se continua ad apparire la finestra parametro, ipotizzo:
    A) Hai scritto il nome campo erroneamente.
    B) Non vorrei che il campo di cui fai riferimento è impossibile raggiungerlo…magari si tratta di una maschera…forse chiusa.

    Io non so cosa sia una maschera di spostamento, tuttavia potresti raccontare dettagliatamente l'intero conteso?

    Il nome del campo l'ho copiato dal database con copia e incolla e quindi non c'è ombra di dubbio……..

    Una maschera di spostamento è una maschera “a schede” ed ogni scheda contiene una sottomaschera ti allego un immagine

  • Re: Vba per filtrare un campo data

    Allora non hai lenidee ben chiare.

    Se la maschera a cui devi applicare il filtro è una Sottomaschera perché tu lo applichi a [Me] che è la maschera principale…?(o meglio la maschera in cui hai il button click)

    Si fa molta molta fatica.

  • Re: Vba per filtrare un campo data

    Alex ….se fai fatica …lascia stare

    Grazie lo stesso

  • Re: Vba per filtrare un campo data

    Secondo me è un bug.

  • Re: Vba per filtrare un campo data

    10/03/2023 - Moroeno ha scritto:


    Alex ….se fai fatica …lascia stare

    Grazie lo stesso

    No se si fa fatica puo essere sia tu a dover modificare l'approccio… io te lo faccio notare… e tu sopporti come noi sopportiamo la superficialità.

    Ti ho dato la soluzione nonostante la fatica ma come vedi nemmeno sei riuscito a capirla…

  • Re: Vba per filtrare un campo data

    11/03/2023 - @Alex ha scritto:


    10/03/2023 - Moroeno ha scritto:


    Alex ….se fai fatica …lascia stare

    Grazie lo stesso

    No se si fa fatica puo essere sia tu a dover modificare l'approccio… io te lo faccio notare… e tu sopporti come noi sopportiamo la superficialità.

    Ti ho dato la soluzione nonostante la fatica ma come vedi nemmeno sei riuscito a capirla…

    Ho esposto dettagliatamente quale era il mio obbiettivo  "con microsoft access 365 in una maschera di spostamento ho una sottomaschera che si chiama "ResiduiContratti" che ha un campo che si chiama "Fine validità CTR R" tipo data gg/mm/aa, sto cercando di creare un pulsante che con una macro vba filtra il campo "Fine validità CTR R" con la data maggiore di "Oggi" con il codice vba" codice che ho provato ad assemblare ed i conseguenti errori risultanti non che applicare i suggerimenti nei posto sopra e non funzionando provando a modificarli o adattarli arragiandomi, e per quanto non la definirei  “superficialità”.

    Il mio approccio è orientato a cercare e trovare una soluzione per il mio database ed a lasciare una traccia per altre persone del forum.

    Se non capisco la tua soluzione………lascia stare……….., se fai fatica……. lascia stare, riposati….. scrivi in altri post per altre problematiche ……….non c'è bisogno che scrivi soluzioni che non capisco :) ………..perchè devi fare fatica?….lascia perdere …..no?

Devi accedere o registrarti per scrivere nel forum
17 risposte