Come fare per raggruppare/filtrare i dati in una query, per settimana ?

di il
18 risposte

Come fare per raggruppare/filtrare i dati in una query, per settimana ?

Buona sera.


Se fosse possibile vorrei filtrare e raggruppare i dati per settimana che inizia alle 06.00 del Lunedì e finisce alle 06.00 del Lunedì successivo.


Si può fare?

18 Risposte

  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Si può fare tutto... ma serve saperci lavorare...!
    La Settimana, per tutti inizia a mezzanotte del Nuovo Giorno, questo significa che tu devi crearti una Funzione Alternativa per il calcolo della TUA settimana lavorativa che vada dalle 6 del Lunedì alle 6 del Lunedì successivo... a quel punto potrai Raggruppare per settimana.
    Suggerisco di generare un Campo Testo Calcolato in una query che sfruttando la Data estesa con hh:mm:ss costruisca un valore Testuale contenente ANNO e SETTIMANA, del tipo "Y19W07" in questo modo riesci a raggruppare correttamente.

    Questa Funzione calcola la Settimana Di base, per modificarla con la finalità da te richiesta devi semplicemente SOTTRARRE 6h all'orario se e solo se il giorno è Lunedì e l'Ora è < delle ore 6.

    Prova a modificarla e testarla in Finestra Immediata...
    
    Public Function Date2Week(Optional ByVal dtmDate As Variant) As Byte
        ' ------------------------------------------------------
        ' Calcolo formato ISO 8601:1988 standard
        ' Verificati i casi da KB [OK]
        ' https://support.microsoft.com/it-it/kb/200299
        ' ------------------------------------------------------
        Dim ret              As Byte
        If IsMissing(dtmDate) Then dtmDate = Date
        
        ret = Format(dtmDate, "ww", vbMonday, vbFirstFourDays)
        If ret > 52 Then
          If Format(dtmDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then ret = 1
        End If
        Date2Week = ret
    End Function
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Grazie mille.

    Farla nom saprei manco da dove iniziare... speriamo almeno riesca a utilizzarla...

    Appena riesco provo.
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Ci sto provando, ho incollato il codice nella finestra immediata ma non succede nulla. Sbaglio qualcosa sicuramente ma non so cosa.
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Per iniziare da qualcosa di più semplice... come raggruppo per settimana in modo tradizionale..ossia dalle ore 24 della Domenica ?

    Poi se avrai voglia e tempo mi spiegherai meglio quella funzione dove va inserita e come va modificata.
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Cosa significa quando dici di aver incollato la funzione nella finestra immediata...?

    Per raggruppare in modo standard per settimana devi usare quella funzione è concatenarla con l'anno... esattamente come ti ho detto prima... Non ci sono scorciatoie.
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Mi hai scritto di provarla nella finestra immediata e dopo averla cercata perché non sapevo dove fosse la "finestra immediata" ho incollato la funzione e provato a fargli eseguire il codice.Ho già detto di non fare questo di lavoro...quindi o scendi di livello o non riesco a procedere.
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Con la composizione guidata di una query trovo: raggruppa per giorno, mese, trimestre, anno...a me serve raggruppare per settimana però
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Credevo ci fosse una cosa tipo queste da inserire in una query


    Espr2: DatePart("aaaa";[******]![DATA])

    Mese: DatePart("m";[*****]![DATA])


    Non esiste?
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Se non ti ho proposto la soluzione c'è un motivo... nel tuo caso sono 2...
    La funzione di aggregazione per settimana che usa "ww" restituisce un valore NON affidabile ovvero non corretto nell'anno, secondo tu devi in ogni caso personalizzarlo... e la strada è quella che ti ho suggerito.
    Ora vedi tu, direi che hai tutto quello che serve anche la possibilità di sperimentare io non posso aggiungere altro.
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Magari puoi dirmi dove mettere precisamente questa funzione che mi hai consigliato ...come farla lavorare con la query su cui si basano già i raggruppamenti per mese, giorno e anno

    Public Function Date2Week(Optional ByVal dtmDate As Variant) As Byte
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    La metto in un modulo e la richiamo dalla query?
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    veganroby ha scritto:


    La metto in un modulo e la richiamo dalla query?
    Ovviamente.

    veganroby ha scritto:


    Magari puoi dirmi dove mettere precisamente questa funzione che mi hai consigliato ...come farla lavorare con la query su cui si basano già i raggruppamenti per mese, giorno e anno
    P.S. in relazione alla Query che vorresti usare... rifletti su quanto dici... come può funzionare se Raggruppi per Mese e Giorno...?
    Sai che nel raggruppamento vince la granularità Minore... quindi se pensi di ottenere dati Raggruppati per Settimana la dove hai il Giorno... è assurdo.
    Se devi avere Granularità Settimanale... il Campo Minimo deve essere la Settimana e deve sparire il Giorno... fossi in te farei sparire anche il Mese dal momento che una Settimana può essere a cavallo tra 2 Mesi, ed avresti dati potenzialmente non coerenti o meglio giustamente divisi per Mese/Settimana...
    Insomma vedi tu, ma riflettici.
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Alex, grazie per tutte le info e la pazienza...

    Volevo chiederti, visto che ho trovato questa formula o funzione che sembra faccia al caso mio a prima vista, che ne pensi e quali lati deboli ha che mi sfuggono a prima vista?

    In una query che raggruppa per mese, in una espressione, ho messo questa e mi restituisce il n settimana che pare giusto in ogni record.

    =DatePart("ii";Data;2;2)
  • Re: Come fare per raggruppare/filtrare i dati in una query, per settimana ?

    Perché continui a chiedere su cose che ti ho già detto...
    Ti accorgerai da solo dei risultati di quella funzione quando avrai risultati errati.

    Anche funzionasse correttamente, e non è così come ti ho già detto è un baco conosciito, parte da mezzanotte.
Devi accedere o registrarti per scrivere nel forum
18 risposte