Newsgroup: it.comp.appl.access
Titolo: Filtrare una maschera sulla base di un campo Data Formattato

Salve a tutto il gruppo.
Passate buone ferie?...
il mio quesito di oggi è questo:
In una Maschera ho un campo non associato, chiamato MeseAnno
che ha un origine dati così formattato = Format$([DataBolla];"mmmm aaaa";0;0)
Per cui nei record visualizzo “Agosto 2019”, “Settembre 2019” anziché le date delle Bolle 
Ora mi serve filtrare la maschera e su DopoAggiornamento di  una Combo chiamata FiltroMeseAnno ho inserito il seguente codice: 
 
Me.Filter = "[MeseAnno]= " & Chr$(34) & Me![FiltroMeseAnno] & Chr$(34)
Me.FilterOn = True
 
Niente da fare.  Compare la maschera di Dialogo Access che mi chiede di inserire il valore di MeseAnno.
...Eppure la finestra immediata, all’istanza
?Me.filter  …mi restituisce ciò che ho selezionato sulla Combo per esempio:
[MeseAnno]= "agosto 2019"
Cosa sbaglio?...

gabria...@gmail.com
 explained on 21-08-19 :

Ci provo... senza averci provato:
Me.Filter = "[MeseAnno]= '" & Me![FiltroMeseAnno] & "'"
 
Bruno


Grazie Bruno.
Anche così mi restituisce il valore mancante di MeseAnno
Solo che la Finestra immidita mi dà "Tipo non corrispondente"
Io penso che il problema dipenda dall'origine dati che ho messo in questa
Combo MeseAnno:
Espressione1: Format$([DataBolla];"mmmm aaaa";0;0)
Praticamente Ho preso la tabella in cui ci sono le DateBolle
e l'ho messa come origine dati con questa espressione...
In modo da avere nella Combo, gli stessi valori che devo filtrare nella maschera. 
Che ne pensi?...

Non confondere l'uso del FORMAT che modifica solo la VISUALIZZAZIONE e non il contenuto... il camp ORIGINALE è DATA, ma il campo Calcolato ottenuto con il FORMAT non è DATA ma TESTO..., quindi come tale va usato...!
 
Quindi se devi Filtrare co AGOSTO 2019 devi applicare il Filtro al campo Formattato... in sostanza comparazione di Testo.
 
Ipotizzando tu abbia 2 Variabili con Mese="Agosto" ed Anno="2019" in formato Testo:
Me.Filter = "[MeseAnno]= '" & Mese & "/" & Anno & "'"
 
Oppure operi sul campo DATA:
Me.Filter = "Format$([DataBolla],"mmmm yyyy")= " & Format$(Date(),"mmmm yyyy")
 
Me.FilterOn = True
 
Ovviamente ho passato DATE() che restituisce "Agosto 2019"
 
@Alex


Buongiorno Alex
Non ho capito la tua seconda parte:
-----
Oppure operi sul campo DATA:
Me.Filter = "Format$([DataBolla],"mmmm yyyy")= " & Format$(Date(),"mmmm yyyy")
-----
dove mettere questo codice, su VBA dà errore...
 

Si non ho scritto l'istruzione giusta, pensando fosse ovvio che nella parte inviata a JET servisse il PUNTOVIRGOLA come separatore ed ovviamente le virgolette non possono essere usate interno stringa ma servono apici singoli, mentre la parte risolta dal VBA è giusta.
 
Me.Filter = "Format$([DataBolla];'mmmm yyyy')= " & Format$(Date(),"mmmm yyyy")
 
Fai qualche prova...
 
@Alex

 Me.Filter = "[MeseAnno]= '" & Me![FiltroMeseAnno] & "'"
 
Rileggendo più accuratamente il tuo post...
 
Non puoi applicare un filtro prendendo come chiave un campo
non associato!!!
 
Quindi nel RecordSource di Form inserisci una query con
un nuovo campo così definito:
    MeseAnno:Format([DataBolla],"mmmm yyyy")
quindi nel ControlSource della Form poni, in luogo della
formula che ivi si trova, MeseAnno.
 
Poi in AfterUpdate della combo (che porta nella propria query
i campi raggruppati MeseAnno della query di Form) inserisci:
    Me.FilterOn = True
    DoCmd.ApplyFilter , "[MeseAnno]='" & Me![FiltroMeseAnno] & "'"
 
Per eliminare il filtro esegui da un CommandButton di Form:
    Me.FilterOn = False
 
Bruno


OK GRAZIE


OK Funziona. (A parte qualche piccolo errore di sintassi in questo Format
 MeseAnno:Format([DataBolla],"mmmm yyyy") 
(virgola e yyyy = Punto e virgola e aaaa)
poi tutto bene.
Campanini Forever! :-)

After serious thinking 
gabria...@gmail.com
 wrote :

Nella mia versione ENG il separatore di lista è la virgola
e l'anno si esprime in "y".
Tu starai usando la versione ITA.
Ciao
 
Bruno


ah!....Accadono anche di queste cose!...
operatori diversi a seconda della versione!
Complimenti ad Access! Un linguaggio dovrebbe essere UN linguaggio!

Le impostazioni internazionali devono essere rispettate da qualsiasi linguaggio... non credi... come la virgola ed il punto separatori di decimale... o l'accezione anglosassone delle date...
Magari l'osservazione più adatta riguarda quelle cose che invece non hanno a che fare con le impostazioni del S.O. come i TWIPS es i PIXELS... che non ha un vero e proprio senso...
 
Chi sviluppa però ha modo di scrivere codice facilmente adattabile... se ha applicazioni che devono funzionare in paesi diversi altrimenti problema inesistente.
 
@Alex

gabria...@gmail.com
 was thinking very hard :

Qui non si tratta di linguaggio, non si tratta di VBA, quello
è linguaggio.
Il quale VBA rimane immutato anche nella versione italiana.
 
Nelle traduzioni di tutto il resto ognuno se la tira come vuole.
 
Bruno

In ogni caso...
Se scrivo ;mmmm aaaa
Chiudo il programma in ACCDE
lo vendo e un cliente lo istalla
Su un Office in inglese... non funzionerà
...linguaggio o non linguaggio, giusto?

Sbagliato o meglio... devi comprendere la differenza tra il vba e l'interprete.
In vba se usi Format non userai MAI la notazione in italiano perché non funziona... 
Ma se scrivi usando il generatore di espressioni nelle queries o dell'origine controllo allora si.
Come ti accennavo prima se sai che la tua applicazione deve essere flessibile devi evitare di passare per l'interprete.
Le queries si usa più com odamente i Parameters che no  risentono della lingua... ne delle impostazioni.
 
@Alex