Discussione:
Funzione DatePart ed errore di sintassi
(troppo vecchio per rispondere)
Simone Riva
2009-07-02 15:01:01 UTC
Permalink
Ho difficoltà a capire come utilizzare la funzione di cui in oggetto in una
query, per estrarre ad esempio il numero della settimana associata ad una
data. Facendo riferimento alla guida in linea la sintassi è molto semplice:
DatePart("ww", data). Tuttavia su un pc con access 2007 funziona solo
passando come parametri ("ww";data) (con il ";", nonostante la guida mostri
","); su un pc con access 2003 funziona utilizzando "ii" anzichè "ww"
nonostante la guida riporti "ww". Qualcuno è in grado di spiegarmi perchè
devo utilizzare ";" anzichè "," e soprattutto "ii" anzichè "ww"? In
particolare, dovendo condividere il file tra più pc con versioni diverse di
office, con quale criterio devo utilizzare l'una piuttosto che l'altra
soluzione?
Grazie.
Cinzia
2009-07-03 07:18:15 UTC
Permalink
Post by Simone Riva
Ho difficoltà a capire come utilizzare la funzione di cui in oggetto in una
query, per estrarre ad esempio il numero della settimana associata ad una
DatePart("ww", data). Tuttavia su un pc con access 2007 funziona solo
passando come parametri ("ww";data) (con il ";", nonostante la guida mostri
","); su un pc con access 2003 funziona utilizzando "ii" anzichè "ww"
nonostante la guida riporti "ww". Qualcuno è in grado di spiegarmi perchè
devo utilizzare ";" anzichè "," e soprattutto "ii" anzichè "ww"? In
particolare, dovendo condividere il file tra più pc con versioni diverse di
office, con quale criterio devo utilizzare l'una piuttosto che
l'altra
soluzione?
Grazie.
Ciao Riva,
il comportamento che riscontri dipende dalla localizzazione del
prodotto, il ";" come separatore di parametri in una funzione, invece
della , è dovuto alla localizzazione italiana, in particolare la
separatore di elenco impostato sul tuo pc, se guardi una query dove
nel QueryBuilder hai DatePart("ww"; tuaData) e gli dici di
visualizzare la sintassi SQL vedrai che troverai scritto :
DatePart("ww", tuaData)
anche "ii" e "ww" dipendono dallo stesso problema anche se ti dirò che
sul mio Access 2003 sp3 accetta nel queryBuilder DatePart("ww"; data)
e non datePart("ii"; data).
Stai attento che se anzichè in una query o in un'origine controllo di
una Form usi l'istruzione DatePart nel codice VB dovrai sempre usare
DatePart("ww", tuaData)
La regola vale non solo per datePart ma per tutte le funzioni
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
http://accessdaziacin.spaces.live.com
----------------------------------------
Karl Donaubauer
2009-07-03 10:04:02 UTC
Permalink
Ciao Cinzia,
Post by Cinzia
...
il comportamento che riscontri dipende dalla localizzazione del
prodotto, il ";" come separatore di parametri in una funzione,
invece della , è dovuto alla localizzazione italiana, in
particolare la separatore di elenco impostato sul tuo pc, se guardi
una query dove nel QueryBuilder hai DatePart("ww"; tuaData) e gli
DatePart("ww", tuaData)
anche "ii" e "ww" dipendono dallo stesso problema anche se ti dirò
che sul mio Access 2003 sp3 accetta nel queryBuilder DatePart("ww";
data) e non datePart("ii"; data).
Ah, interessante!
Da alcuni mesi ho l'impressione che qui si è cambiato qualcosa
suppongo con uno dei update per Office, JET (expression service)
o WinXP.

Su molte macchine e molte volte (ma non sempre) da me e anche
dai clienti Access (almeno con 2003 e XP l'ho vistl) non accetta
più le versioni localizzati per le funzioni di data ma solo inglese
(ww, yyyy ecc.).

P.e. sul PC qui ho A97, AX e A03. Ho lanciato A03 e provato
Datepart nel origine controllo di una casella di testo con abb.
in tedesco per l'anno. Non ha funzionato ma ho dovuto usare "yyyy".

Poi ho cambiato a A97 e ha funzionato in tedesco. Poi con AX
e ha funzionato in tedesco. Poi ho riavviato A03 e adesso anche
qui ha funzionato con tedesco.

Quindi è un comportamento strano (IMO un bug) è non sempre
da riprodurre. Soprattutto quando sviluppo dai clienti devo sempre
controllare quale abbreviazioni devo digitare al momento.
Post by Cinzia
Stai attento che se anzichè in una query o in un'origine controllo
di una Form usi l'istruzione DatePart nel codice VB dovrai sempre
usare DatePart("ww", tuaData)
La regola vale non solo per datePart ma per tutte le funzioni
Sì, e come VBA sempre e solo accetta le versioni inglesi
nella guida spesso si trova la descrizione ed esempi inglesi
con "ww" ecc. e la virgola come separatore.
--
cu
Karl
*********
Access FAQ: www.donkarl.com/it
Loading...