La Data di Pasqua in Access

Ci sono vari siti che consentono di calcolare il giorno di pasqua a partire dall’anno ed altri che consentono di calcolare tante altre cose. In questo piccolo tutorial vedremo come implementare delle funzioni per il calcolo del giorno della Pasqua in VBA per Access e quindi portabile a tutti i programmi scritti in Visual Basic, basteranno solo alcuni piccoli ritocchi. Nei software gestionali che gestiscono il lavoro degli operai è importante sapere questa data anno per anno perchè la Pasquetta è l’unico giorno dell’anno festivo non fisso. Il giorno della Pasqua viene calcolato come la prima domenica dopo il primo plenilunio dopo l’equinozio di primavera che cade sempre il 21 marzo. Da questa semplice regola si può osservare che è possibile calcolare questa data perchè segue il ciclo delle fasi lunari che ha una cadenza fissa di 19 anni e quindi passiamo a creare la nostra funzione. Per prima cosa creiamo un database Access e poi una maschera, in visualizzazione struttura inseriamo un controllo edit per prendere l’anno, un campo di edit per ritornare la data ed un button da premere per il calcolo. A questo punto scriviamo la nostra funzione per il calcolo del giorno di pasqua:

Public Function CalcEaster(iAnno As Integer) As String
   Dim arrGm, arrDa As Variant,
        iA, iB, iC, iD, iE, iG As Integer
   Dim iDay, iMonth As Integer

   arrGm = Array(22, 22, 23, 23, 24, 24)
   arrDa = Array(2, 2, 3, 4, 5, 5)

   iA = iAnno Mod 19
   iB = iAnno Mod 4
   iC = iAnno Mod 7
   iD = CInt((iAnno / 100) - 15)
   iE = (19 * iA + arrGm(iD)) Mod 30
   iG = (2 * iB + 4 * iC + 6 * iE + arrDa(iD)) Mod 7
   iDay = 22 + iE + iG
   iMonth = 3
   If iDay > 31 Then
      iMonth = 4
      iDay = iDay - 31
   End If

   CalcEaster = CStr(iDay) + "/" + CStr(iMonth) + "/" +
        CStr(iAnno)

End Function

Come vedete tutto viene calcolato su dei giorni fissi sistemati in 2 array, il ciclo lunare ogni 19 anni e l’anno se bisestile, nel qual caso abbiamo un giorno in più. Il resto è tratto dai tanti algoritmi presenti sul web ed ho scelto il più semplice e breve. In ultima analisi se il giorno è maggiore di 31 viene inserito il mese ad aprile ed il giorno diminuito di 31 per l’appunto; questo perchè la pasqua può rientrare solo nei mesi di marzo o aprile. Il codice sorgente di questo tutorial lo potete trovate nella sezione download del nostro sito.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Office e contrassegnata con , , . Contrassegna il permalink.