Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi con il filtro per data

Ciao a tutti, ho un problema con la stringa di filtro di un rs che vedete
qui sotto.
rs.Filter = "DATA >= #01/01/" & Mid(Date, 7, 4) - 1 & "# and DATA <=
#31/12/" & Mid(Date, 7, 4) - 1 & "#"
Questa si trova nel form load e non fa altro che caricare all'apertura del
form tutte le fatture dal 1° gennaio dell'anno precedente a quello attuale
fino all'ultimo giorno dello stesso anno.
Con le impostazioni internazionali in italiano del pc funziona tutto
correttamente, ma se metto le impostazioni americane (con il formato data
MM/DD/yyyy) logicamente il filtro non  funziona più.
Come potrei ovviare al problema?
Vi ringrazio ciao

 Come potrei ovviare al problema?
Esattamente quattro giorni fa hai avuto lo stesso identico problema.
Ne abbiamo discusso, ti ho spiegato dove era il problema e come risolverlo.
Avevi chiuso il thread dicendo di avere risolto tutto...
Ti consiglio, sinceramente, di rileggerti il precedente thread. Il problema
č esattamente, in tutto e per tutto, lo stesso.
Ciao
Alberto

 Esattamente quattro giorni fa hai avuto lo stesso identico problema.
(snip)
eh eh eh.... ( :-) )
Sapevo che, aspettando giusto cinque minuti sarebbe apparso questo post....
Però c'è una cosa che mi lascia perplesso... torniamo alla stringa di zed:
rs.Filter = "DATA >= #01/01/" & Mid(Date, 7, 4) - 1 & "# and DATA <=
#31/12/" & Mid(Date, 7, 4) - 1 & "#"
a mio parere, modificando le impostazioni internazionali da italiano a americano
non cambia nulla, risolvendo i mid con le loro conversioni implicite dovrebbero
sempre restituire l'anno (concordo, per altro, che è un sistema assolutamente
aleatorio).
L'unica differenza potrebbe essere nell'interpretazione del criterio filter, ma
mi sembra che questa segua la sintassi sql, per cui le date siano sempre in
formato americano, a prescindere dall'impostazione locale, con la solita
conversione in caso di data impossibile.
Ho sbagliato qualcosa?
Salutoni
Sergio


Si hai ragione, avevo risolto tutto, ma in questo caso come potrei applicare
il format a quella stringa.
Scusa ancora per il disturbo
Ciao


Non hai sbagliato niente.
Ritengo invece che le modifiche che Zed ha giustamente fatto per testare
l'applicativo non fossero semplicemente da ITA a USA, quanto anche nel
formato di rappresentazione dell'anno (4 o 2 cifre).
Oltre a questo, proprio perchè tu fai notare che nel .Filter le date vanno
visualizzate in formato americano, mi sembra strano che sia accettato quel
31/12/, ma se Zed dice che con le impostazioni ITA la cosa funziona...
Oltre a questo, va rilevato anche quella sottrazione (-1) applicata ad una
substring, che, per quanto in effetti sia un variant, non è del tutto
corretta quanto a tipizzazione.
Ciao
Alberto

 applicare il format a quella stringa.
Vediamo...
Io farei cosě:
rs.Filter = "DATA >= #01/01/" & cstr(val(format$(Date,"yyyy")) - 1) & "# and
DATA <= #12/31/" & cstr(val(format$(Date, "yyyy")) - 1) & "#"
Ciao
Alberto
PS: quel cstr(val(format$(date,"yyyy"))) non č bellissimo. Molto meglio
usare la funzione year(...). Ma non volevo scombussolarti il modo di
lavorare.


Sei stato gentilissimo e superveloce.
Io avevo pensato ad una cosa simile ma pensavo che mettendo ad esempio 12/31
poi non mi funzionava in italiano.
Vedo invece che funziona... beh sono contento ho imparato una cosa nuova :-)
Ciao e grazie