Newsgroup: it.comp.appl.access
Titolo: Problemi con datePart e DateSerial o altro?

ciao a tutti,
ho questa query con 2 campi: dataArrivo e settimana (campo calcolato)
 
SELECT programmazione.dataArrivo, DatePart('ww',[dataArrivo])-DatePart('ww',DateSerial(Year([dataArrivo]),Month([dataArrivo]),1))+1 AS settimana
FROM programmazione
WHERE (((DatePart('ww',[dataArrivo])-DatePart('ww',DateSerial(Year([dataArrivo]),Month([dataArrivo]),1))+1)=2));
 
risultato voluto tutto ok:
dataArrivo     settimana
3/11/2022    1
8/11/2022    2   ecc.ecc.
 
se metto anche un criterio su dataArrivo
SELECT programmazione.dataArrivo, DatePart('ww',[dataArrivo])-DatePart('ww',DateSerial(Year([dataArrivo]),Month([dataArrivo]),1))+1 AS settimana FROM programmazione
WHERE (((programmazione.dataArrivo)>=#11/1/2022# And (programmazione.dataArrivo)<=#11/30/2022#) AND ((DatePart('ww',[dataArrivo])-DatePart('ww',DateSerial(Year([dataArrivo]),Month([dataArrivo]),1))+1)=2));
 
ottengo la risposta
tipo di dati non corrispondenti nel criterio
 
allora ho fatto varie combinazioni nel campo calcolato
ho sostituito dateSerial con il suo risultato e i due criteri vengono applicati
 
settimana: DatePart('ii';[dataArrivo])-DatePart('ii';#01/11/2022#)+1
 
considerazioni banali
datePart e dateSerial non funzionano insieme se in presenza 
di  criterio su dataArrivo  e criterio su settimana.
DatePart e dateSerial funzionano insieme senza 
criterio su dataArrivo e criterio su settimana
sbaglio?
 

 ...
Il messaggio di errore nella maggior parte dei casi viene dei valori 
mancanti in almeno un record. Funzioni come DateSerial generano quindi 
un "#Error" nella riga del valore mancante, che poi genera questo 
messaggio se è presente un criterio (=un confronto con l'errore).
 
L'unica cosa che mi sorprende leggermente è che la tua prima variante 
non abbia già dato l'errore. Bisognerebbe esaminare i dati più da vicino.
 
Di solito puoi eliminare l'errore e il messaggio escludendo i valori 
mancanti nel posto giusto, cioè
 
iif(Not IsNull(dataArrivo), DatePart(blabla...
 
-- 
Ciao
Karl
*********
Access Bugs: 
https://AccessForever.org
 
Access News: 
https://youtu.be/XMOHBSudo-U
 
Access DevCon: 
http://AccessDevCon.com
 
Access FAQ: 
https://www.donkarl.com/it
 

ciao Karl, wie geht's dir? (ci conosciamo da tempo)
no, non esistono valori null in nessun record. Questo è sicuro
Quello che non capisco io è perché senza criterio nel campo dataArrivo il campo calcolato che contiene la differenza tra due datepart funziona.
se metto un criterio nel campo DataArrivo (>=#01/11/2022# And <=#30/11/2022#) il campo calcolato che contiene la differenza tra due datePart mi l'errore.
 inoltre ho provato così:
settimana: DatePart('ii';[dataArrivo])-DatePart('ii';#01/11/2022#)+1 non da errore.
cosa ho cambiato qua? ho messo la data manualmente, ovvero  il risultato di DateSerial(Year([dataArrivo]);Month([dataArrivo]);1)
insomma datePart - datePart con la data manuale funziona
datePart - datePart con DateSerial non funziona
grazie
 

Posta un file di esempio per poter verificare.

 Posta un file di esempio per poter verificare.
 
ecco il file di esempio
 
https://we.tl/t-K4rNPOQcGM
 
 
grazie


chiedo scusaaaaaaaa a tutti avevi ragione Karl vi era un record vuoto in dataArrvio

 Posta un file di esempio per poter verificare.
 
chiedo scusa a tutti  era un errore di valore null in un cazzo di record sperduto in migliaia

Questo succede perchè non vi preoccupate mai di gestire la proprietà Richiesto dei campi.
Se in un campo dece essere sempre inserito un valore è bene che impostiate Richiesto a Sì.

 Se in un campo dece essere sempre inserito un valore è bene che impostiate Richiesto a Sì.
giustissimo mo lo faccio subito