Filtrare record di una maschera, in base al valore contenuto in una casella di testo.

Anonimo
2018-02-18T12:47:54+00:00

Gentilissimi,

ho una casella di testo in una maschera, che contiene una data.

Vorrei filtrare i record di questa maschera, in base al valore della data contenuta nella casella di testo.

In pratica vorrei che al variare della data, contenuta in questa casella di testo, poter vedere tutti i vari record che contengono quella data.

Spero che mi possiate aiutare, per poter eseguire questa operazione.

Ringraziandovi anticipatamente, porgo i miei più cordiali saluti.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2018-02-19T07:19:42+00:00

ciao Giuseppe,

se cerchi nella community trovi un sacco di materiale a riguardo, il tema è molto trattato.

Se vuoi filtrare in base ad una data generalmente si procede da data a data .... ma il tuo quesito è diverso.

In questi casi è bene formattare il controllo in modo che il dbEngine interpreti correttamente il campo data, come minimo quindi creare il filtro con il formato anglosassone.

Prevederei oltre a questo la possibilità che mantenere la formattazione in base alle impostazioni di sistema, la possibilità qualora il filtro sia null o nullString che non venga applicato ( il filtro)  e/o visualizzare tutti i records, come impedire che il filtro venga rimosso agendo sul ribbon. 

vedi qui :

https://support.office.com/it-it/article/formattare-il-campo-della-data-e-dell-ora-in-access-47fbbdc1-52fa-416a-b8d5-ba24d881b698

ed adatta il seguente codice al tuo scenario, personalizzando controlli e campi ( servirebbe anche validare il controllo data...trovi qui sotto un esempio minimale).

Option Compare Database

Option Explicit

Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)

Cancel = ApplyType = 0

End Sub

Private Sub Form_Error(DataErr As Integer, Response As Integer)

Select Case DataErr

Case 2113

VBA.MsgBox prompt:="Non hai inserito una data valida!", _

Buttons:=vbCritical, _

Title:="Warning!"

Response = acDataErrContinue

Case Else

' what to do

End Select

End Sub

Private Sub Form_Open(Cancel As Integer)

With Me

.Filter = "1=0"

.FilterOn = True

End With

End Sub

Private Sub Form_Unload(Cancel As Integer)

With Me

.Filter = vbNullString

.FilterOn = False

End With

End Sub

Private Sub txtData_AfterUpdate()

With Me

If Len(.txtData & vbNullString) > 0 Then

.Filter = "[order date]=" & Format$(.txtData, "#mm/dd/yyyy#")

' da valutare anche l'istruzione che segue

'.Filter = "[order date]=" & CLng(.txtData)

.FilterOn = True

Else

.Filter = vbNullString

.FilterOn = False

End If

End With

End Sub

HTH.

ciao, Sandro.

La risposta è stata utile?

0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2018-02-18T20:37:25+00:00

    Ciao,

    nell'evento dopo aggiornamento della casella di testo applichi il filtro alla maschera tipo:

    me.filter = "campoData = #" & caselladitesto & "#"

    me.filteron=true

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento