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 | Access | 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-11T23:32:03+00:00

    Ciao Giorgio,

    GRAZIE!

    Gianfranco

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-12-11T14:21:41+00:00

    Ciao Giorgio,

    nel preparare il DB da pubblicare ho pulito da dati e controllato i formati dei campi data, li ho cambiati in Data in cifre e adesso funziona!

    Non mi ricordavo che le fetività le avevo preparate per il 2013!

    [CUT]

    sospettavo qualcosa del genere.

    per quanto riguarda la possibilità di definire solo giorno e mese, probabilmente si può fare cambiando la routine e la tabella ma direi che siamo effettivamente fuori dall'argomento "ricavare il lunedi della settimana", consiglio di aprire una nuova domanda.

    Ciao

    Giorgio Rancati

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-12-11T12:36:58+00:00

    Ciao Giorgio,

    nel preparare il DB da pubblicare ho pulito da dati e controllato i formati dei campi data, li ho cambiati in Data in cifre e adesso funziona!

    Non mi ricordavo che le fetività le avevo preparate per il 2013!

    A proposito esiste un modo per non definire l'anno, ma solo giorno e mese?

    Ciao Gianfranco.

    La risposta è stata utile?

    0 commenti Nessun commento