Newsgroup: it.comp.appl.access
Titolo: Raggruppare campo calcolato per settimana

Ciao,
in una query (già filtrata per mese) vorrei raggruppare in un campo calcolato
i records per settimana mettendo 
1 = prima settimna 
2= seconda settimana
3= terza settimana
4= quarta settimana
grazie
Vito

Intanto serve capire come per te sono suddivise le settimane nel mese...
Domanda non banale... se il 1° è venerdì fa parte dell'ultima settimana mese precedente o no...?
Quindi quando hai le idee chiare... serve scrivere una funzione alla quale passare la data, w questa deve restituire un numero 1÷5... o quello che in base al tuo algoritmo deve essere.
Raggruppando per mese e numero di settimana otterrai quello che chiedi.
 
@Alex


ciao alex,
le settimane devono andare da lunedì a domenica
se nella prima settimana il venerdì è il primo allora il raggruppamento per la prima settimana sarà venerdì sabato domenica
Ti chiedo di indicarmi una strada logica per la funzione poi vedo di farcela.
io pensavo di mettere un campo calcolato che per l'intervallo lunedì-domenica (es. maggio 3 - 10)mi mettesse valore 1e così via....
 


Raggruppa anche per    Format([Data],"ww")


ho usato format([data]);"ii") ww non funziona con access 2016
ma così riferito al mese di aprile ottengo il numero di settimana nell'anno ovvero: 15 -16 - 17- 18 - 19
e qua potrei manualmente filtrare per un numero di questi
 
ma nella mia maschera all'utente presento la scelta che vedi nella immagine:
https://ibb.co/X5kDKWw
 
quindi mi serve il valore 1 - 2- 3- 4 -5 da dare in pasto alla query come filtro


quindi devi prendere la data di inizio mese: 
cdate(month(date()) & "/" & 1 & "/" & year(date)) o qualsiasi altro modo con il quale vuoi calcolartela 
e poi raggruppare per il campo
format([data]);"ii") - format([datainiziomese]);"ii") + 1


Per il mio standard di capacità logico-matematiche è una trovata geniale
in pratica hai giocato sulla differenza tra il il numero della settimana corrispettivo alla data del record e
il numero della prima settimana del mese. Poi ci aggiungi 1 per non iniziare da zero.
riferito al mese di aprile 2021
data nel  primo record = 02/04/2021 che corrisponde alla settimana 14
data del primo aprile =  01/04/2021 che corrisponde alla settimana 14
quindi: 14 -14 = 0 +1 = 1 (nel campo calcolato)
 
data nel  trentesimo record = 14/04/2021 che corrisponde alla settimana 16
data del primo aprile =  01/04/2021 che corrisponde alla settimana 14
quindi: 16-14= 2 + 1 = 3 (nel campo calcolato)
 
 
 
dimmi solo una cosa ma come ci arrivate?  Studio? intuito? capacità logico matematiche? 
grazie geniale ancora
Vito
 


bah! un po' tutto insieme :-D
scherzi a parte io sono un autodidatta dell'informatica.. 
in questo gruppo c'è gente di ben altro livello!


arriva le delusione michele,
ho trasferito nel codice per impostare dinamicamente il predicato sql della query non non funziona
vedo di capire perchè e poi ti chiedo aiuto

ho risolto Michele, non andava bene 
cdate(month(date()) & "/" & 1 & "/" & year(date)) mi dava errore tipo di dati non corrispondente allora per ricavare 1/4/2021 ho usato DateSerial
CurrentDb.QueryDefs("dataProva").sql = "SELECT dataProva.dataArrivo, DatePart('ww',[dataArrivo])-DatePart('ww', DateSerial(Year([dataArrivo]),Month([dataArrivo]),1))+1 AS settimana FROM dataProva;"
grazie ancora
Vito
(non so se può servire ma ho notato che nella grigla struttura DatePart('ww';[dataArrivo]) non viene accettato il criterio 'ww' mentre attraverso codice il parametro 'ww' viene accettato)
 


credo che in griglia struttura si debbano usano le virgolette " "


sì sì certo in griglia struttura ho usato "ww" ma non lo accetta, poi in un post ho trovato che bisogna usare "ii", mentre nel codice "ww" viene accettato creando un pò di confuzione, ma pazienza basta che i conti tornano alla fine. ciao

Fai attenzione che esiste un BUG documentato sul valore di WeekNumber restituito da DatePart, sulle date del Fine Anno:
 
https://docs.microsoft.com/it-it/office/troubleshoot/access/functions-return-wrong-week-number
 
 
@Alex