Condividi tramite

Ricavare il lunedì dalla settimana

Anonimo
2012-12-03T22:14:09+00:00

Vorrei  creare delle query, una per giorno della settimana (che saranno base per 7 sottomaschere o sottoreport), che prelevino delle date nel database, le

filtrino per settimana corrente, e raggruppino i record restituiti per giorno della settimana.

Ho trovato una funzione che estre i lunedì di una settimana:

Public Function fctKWMon(ArgKW As Byte, Optional ArgJahr)

    ' restituisce il lunedì della settimana di calendario

    ' di Karl Donaubauer

    Dim M As Date

    If IsMissing(ArgJahr) Then ArgJahr = Year(Date)

    M = DateSerial(ArgJahr, 1, 1) + (ArgKW - 1) * 7

    M = M + 1 - WeekDay(M, vbMonday)

    If Format(M, "ww", vbMonday, vbFirstFourDays) <> ArgKW Then M = M + 7

    If (ArgKW = 1 Or ArgKW = 53) And Day(M) > 4 And Day(M) < 8 Then M = M - 7

    fctKWMon = M

End Function

Come devo strutturare tabelle e SQL?

Gianf

Microsoft 365 e Office | Accesso | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2012-12-05T10:52:42+00:00

Ciao Gianfranco,

potresti inserire nella maschera principale una casella testo in cui andrai a inserire una data di riferimento da cui ricavare la settimana richiesta, poi da questa data si ricavano le 6 date (da lunedì a sabato) per visualizzare le 6 sottomaschere.

se così potrebbe andare comincia ad inserire la casella testo (ad esempio con nome Data_Riferimento)  in cui digitare la data, poi inserisci un'altra casella testo con nome G1 e nella sua origine controllo metti:  =CDate([Data_Riferimento])-(DatePart("w";[Data_Riferimento];2)-1)

La casella testo G1 sarà il campo Master per la prima sottomaschera, quella del lunedì.

Per il martedì inserisci una nuova casella testo di nome G2 e nella sua origine controllo metti = [G1]+1, poi utilizzala come Campo Master della seconda sottomaschera.

Per il Mercoledì inserisci una nuova casella testo di nome G3 e nella sua origine controllo metti = [G2]+1, poi utilizzala come Campo Master della terza sottomaschera.

Così via fino alla casella testo G6.

Imposta per le caselle testo Data_Riferimento, G1, G2, G3, G4, G5, G6 il Formato "Data In Cifre"

Ovviamente le caselle testo da G1 a G6 possono essere invisibile perchè servono solo come campo master per le 6 sottomaschere.

Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

15 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-12-06T21:29:36+00:00

    Ciao Gianfranco

    la velocità dipende dalla quantità di dati che ci sono nella tabella, probabilmente un indice posto sul campo data potrebbe aiutare molto.

    per i due pulsanti è possibile, metti nel codice VBA dell'evento click del pulsante

    Me.Data_Riferimento = Me.Data_Riferimento+7

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-12-06T08:43:58+00:00

    Buongiorno Giorgio,

    ti ringrazio per tutto l'aiuto, ho ottenuto una bellissima maschera della settimana lavorativa.

    Ho costruito una sottomaschera Lunedì è l'ho inserita 5 volte, da lun a ven

    Ti chiedo se è normale che impieghi un pò di tempo per caricare la maschera ( ho un pc core i5) e

    se è possibile implementare la maschera con due pulsanti di comando uno che aggiunge 7 gg alla Data_Riferimento e ricarichi la maschera, l'altro che li toglie.

    Ciao Gianfranco

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-12-04T21:30:47+00:00

    Buonasera Girogio Rancati,

    ho creato un database per la gestione avanzamento programmatico dei lavori,

    in pratica ciò che mi serve ora è visualizzare le fasi di lavoro raggruppati per data , una settimana lavorativa per volta.

    Pensavo di costruire sette anzi sei sottomaschere, una per ogni giorno della settimana, e

    con tasti di funzione, avanzare di settimana in settimana. es

    Indietro Avanti
    <--------- ------->
    Lunedì 3 Martedì 4 Mercoled 5 Giovedì 6 Venerdì 7 Sabato 8

    scusa per la mancanza esplicativa tecnica, ma così spero di essere stato chiaro.

    Ciao Gianfranco.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-12-04T19:20:14+00:00

    Ciao Gianf,

    confesso di aver capito poco niente di quello che ti serve.

    Puoi fare un esempio sintetico di dati che hai a disposizione e del risultato che vuoi ottenere ?

    La tua frase "filtrino per settimana corrente" mi fa pensare che la funzione di Karl non sia quello che ti serve.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento