Settimane + giorni in Access

di aurecop51 il
20 risposte

Salve

sono un neofita. 

Ho creato un modesto DB in cui, tra l'altro, in una maschera immetto una data in una casella di testo (Datainserita) ed in un altra casella (settimane) ho previsto il calcolo della differenza, in settimane, tra quella data e “oggi”. La formula è " =DateDiff("g";[DataInserita];Date())/7".

Logicamente se il numero di settimane non è un numero intero compaiono, dopo la virgola i decimi di una settimana.

per esempio

Datainserita: 21/09/2023  > settimane: 15,3  (essendo oggi 06/01/2024)

Invece io vorrei che il risultato fosse composto dal numero (intero) di settimane compiute ed intercorse fino ad oggi più il numero di giorni (chiaramente max 6).

e quindi (come all'esempio) il risultato fosse :

Datainserita: 21/09/2023  > 15 settimane + 2 giorni

Spero di essere stato chiaro.

Ribadisco di essere un neofita e di conseguenza una soluzione complessa mi creerebbe difficoltà…

Grazie

20 Risposte

  • Utilizza la funzione Int per estrarre la parte intera (le settimane) e calcolare per differenza la parte numerica dopo la virgola che servirà per determinare il numero giorni.

  • Oggi - 21/09/23 = 107 gg

    107/7=15,qualcosa

    15*7=105

    Ergo 107-105=2 (il qualcosa che restava)

    Ne consegue che oggi - 21/09/2023 = 15 settimane e 2 giorni

    Oppure utilizzando i decimali:

    Sapendo che 1/7=0,1428;

    Che la parte decimale di 107/7=15,2857;

    Abbiamo:

    0,2857/0,1428 = 2

    Se fosse stato 108/7=15,4285

    4285/1428=3

    Puoi crearti una tabellina:

    1/7=0,1428

    2/7=0,2857

    Ecc…

    La parte decimale ti informa sul giorno sfuso…

  • Oppure:

    DateDiff("ww";[DataInserita];Date())

    ti calcola il numero di settimane.

    Dopidichè:

    DateDiff("ww";[DataInserita];Date()) * 7

    ti restituice il numero di giorni nelle settimane complete dell'intervallo.

    Sottrai questo valore al numero di giorni nell'intervallo:

    DateDiff("d";[DataInserita];Date())-(DateDiff("ww";[DataInserita];Date()) * 7)

    e ottieni il residuo dei giorni oltre le settimane calcolate.

  • Il calcolo  delle settimane non è formalmente stupido… l'assunto della settimana nel calendaruo standard è che inizia lunedi… non quando si vuole… quindi questo potrebbe complicare nella realtà il calcolo…

    Quindi se devi calcolare il numero di settimane come fai va bene, per i giorni in esubero usa 

    SETTIMANE=NumeroGiorni\7 (attento al backslash)
    Resto=NumeroGiorni MOD 7

    Se invece devi calcolare il numero della settimana in cui vai a cadere…. la cosa è più complessa.

  • Ci avevo pensato, ma lui vuole la differenza in settimane (Come quando il medico il giovedì dice “le prenda per due settimane” oppure “ci vediamo fra una settimana”, non ti poni il problema di quando iniziare a contate) nel senso che tra il 6/1/24 e il 10/1/24 passano 0 settimane e 5 giorni. 

    Ragionando in settimane annue (52 in un anno) sarebbero 1 settimana e 3 giorni.

  • Altro metodo:

    Per x da 1 a 6

    Se differenza-intreo(differenza)=(x/7) allora giorno=x

  • Ringrazio tutti voi per le risposte e sono felice di aver stimolato, da neofita, una discussione interessante anche agli esperti.

    Ora devo tirare le somme…

    Dato che :

    1. nella casella “Data” inserisco la data di partenza
    2. nella casella "Settimane" il numero intero di settimane compiute ed intercorse da quella data ad oggi
    3. nella casella “Giorni” il numero di giorni oltre il numero delle settimane (chiaramente max 6)

    Come e dove mi consigliate di inserire le varie formule ?

    Sarei felice se mi fate un esempio concreto.

    Di nuovo grazie.

  • Formule? Caselle?

    Parliamo di excell?

  • Semmai Excel con una elle…

    Comunque, intende caselle di testo nella maschera…

  • 08/01/2024 - oregon ha scritto:


    Semmai Excel con una elle…

    Comunque, intende caselle di testo nella maschera…

    Vero…

    Più che di formula parlerei di codice.

    Scrivi su un pulsante, su una funzione, sul metodo keypress intercettando il tasto invio, scrivilo dove vuoi.

    Appena trovi gli interi (settimane) e controlli i decimali a quanti x/7 corrispondono ricavi i giorni.

    Poi li inserisci dove vuoi, anche in un messaggio.

  • 08/01/2024 - aurecop51 ha scritto:


    Ringrazio tutti voi per le risposte e sono felice di aver stimolato, da neofita, una discussione interessante anche agli esperti.

    Ora devo tirare le somme…

    Dato che :

    1. nella casella “Data” inserisco la data di partenza
    2. nella casella "Settimane" il numero intero di settimane compiute ed intercorse da quella data ad oggi
    3. nella casella “Giorni” il numero di giorni oltre il numero delle settimane (chiaramente max 6)

    Come e dove mi consigliate di inserire le varie formule ?

    Sarei felice se mi fate un esempio concreto.

    Di nuovo grazie.

    Metti 3 TextBox, chiamale così o modifica anche i riferimenti dei calcoli:

    1. [txtTotDays] in questa metti il calcolo totale dei GG, come Origine Controllo metti 
    =DateDiff("g";TuaDataIniziale;Date())

    2. [txtTotWeeks] in questa metti il calcolo Settimane, come Origine Controllo metti 

    =[txtTotDays]\7

    3. [txtDays] in questa metti i giorni residui o resto e come Origine Controllo scrivi:

    =[txtTotDays] MOD 7

    Poi visualizza quello che vuoi… e come vuoi.

  • 06/01/2024 - aurecop51 ha scritto:


    ho previsto il calcolo della differenza, in settimane, tra quella data e “oggi”.

    Chiaramente se visualizzi il record domani il calcolo salta…

  • Vi ringrazio

    appena potrò  verificherò e vi dirò. (sperando che le mie limitate capacità informatiche me lo consentano).

    Buon lavoro. a presto

  • 08/01/2024 - @Alex ha scritto:


    08/01/2024 - aurecop51 ha scritto:


    Ringrazio tutti voi per le risposte e sono felice di aver stimolato, da neofita, una discussione interessante anche agli esperti.

    Ora devo tirare le somme…

    Dato che :

    1. nella casella “Data” inserisco la data di partenza
    2. nella casella "Settimane" il numero intero di settimane compiute ed intercorse da quella data ad oggi
    3. nella casella “Giorni” il numero di giorni oltre il numero delle settimane (chiaramente max 6)

    Come e dove mi consigliate di inserire le varie formule ?

    Sarei felice se mi fate un esempio concreto.

    Di nuovo grazie.

    Metti 3 TextBox, chiamale così o modifica anche i riferimenti dei calcoli:

    1. [txtTotDays] in questa metti il calcolo totale dei GG, come Origine Controllo metti 
    =DateDiff("g";TuaDataIniziale;Date())

    2. [txtTotWeeks] in questa metti il calcolo Settimane, come Origine Controllo metti 

    =[txtTotDays]\7

    3. [txtDays] in questa metti i giorni residui o resto e come Origine Controllo scrivi:

    =[txtTotDays] MOD 7

    Poi visualizza quello che vuoi… e come vuoi.

    Grazie in particolare ad @Alex. Chiedo scusa se rispondo dopo tanto tempo ma, purtroppo, non ho potuto farlo prima.

    Questo metodo mi funziona molto bene, l'unico problema è che in visualizzazione maschera il numero delle settimane mi appare con molti decimali mentre io vorrei che fosse un numero intero (senza arrotondamento). Nella rispettiva finestra delle proprietà ho inserito sia numero generico che decimali=0 ma il risultato è (se inserisco “Fisso” mi effettua l'arrotondamento)

    nel caso vorrei che risultasse  33 (e non arrotondato).

    Grazie

Devi accedere o registrarti per scrivere nel forum
20 risposte