Ciao a tutti, come al mio solito, chiedo un ulteriore consiglio a qualche altro guru disposto ad aiutarmi.
Su un DB ho un campo denominato "DATA_RIS" da valorizzare; dopo averlo valorizzato, nel caso la data corrisponda ad un giorno di festa, mi dovrebbe restituire in un ulteriore campo denominato "FESTA" di che tipo di festa parliamo (Capodanno, Natale, Ferragosto etc); inoltre, se trattasi di domenica, un campo Sì/No deniminato "Festivo" che mi dovrebbe dare il flag positivo.
Se qualcuno si chiede il perché, mi serve per delle statistiche sugli incidenti stradali (lavoro per un reparto di ... Forze dell'Ordine)
Per quanto riguarda la Domenica, ho semplicemente inserito
Me.G_SETT = WeekdayName(DatePart("w", Me.DATA_RIS))
If left(me.G_SETT,8 )="domenica" then
me.Festivo=1
Else
If Left(Me.G_SETT, 8 ) <> "domenica" Then
Me.FESTIVO = 0
End If
End If
E funziona!
Adesso, per il resto delle festività, dopo aver googlato un poco, mi sono imbattuto in questo sorgente che ho così modificato:
Option Compare Database
Option Explicit
' VERIFICA SE LA DATA E' UN GIORNO FESTIVO IN ITALIA
Public Function Festivo(myDate As Date) As Boolean
Select Case myDate
'1. GENNAIO NUOVO ANNO
Case DateSerial(year(myDate), 1, 1)
me.Festivo = True
me.FESTA = "Capodanno"
'6.GENNAIO - EPIFANIA
Case DateSerial(year(myDate), 1, 6)
me.Festivo = True
me.FESTA="EPIFANIA"
'25. APRILE - LIBERAZIONE
Case DateSerial(year(myDate), 4, 25)
me.Festivo = True
me.FESTA="LIBERAZIONE"
'1. MAGGIO FESTA LAVORATORI
Case DateSerial(year(myDate), 5, 1)
me.Festivo = True
me.FESTA="Festa Lavoratori"
'2. GIUGNO FESTA DELLA REPUBBLICA
Case DateSerial(year(myDate), 6, 2)
me.Festivo = True
me.FESTA="Festa Repubblica"
'PASQUA
Case Easter(year(myDate))
me.Festivo = True
me.FESTA="PASQUA"
'LUNEDI DI PASQUA
Case Easter(year(myDate)) + 1
me.Festivo = True
me.FESTA="Lunedì dell'Angelo"
'15. AGOSTO
Case DateSerial(year(myDate), 8, 15)
me.Festivo = True
me.FESTA="Ferragosto"
'1. NOVEMBRE - TUTTI I SANTI
Case DateSerial(year(myDate), 11, 1)
me.Festivo = True
me.FESTA="Ognissanti"
'8. DICEMBRE - IMMACOLATA CONCEZIONE
Case DateSerial(year(myDate), 12,
me.Festivo = True
me.FESTA="Immacolata"
'25. DICEMBRE - NATALE
Case DateSerial(year(myDate), 12, 25)
me.Festivo = True
me.FESTA="NATALE"
'26. DICEMBRE - SANTO STEFANO
Case DateSerial(year(myDate), 12, 26)
me.Festivo = True
me.FESTA="Santo Stefano"
Inoltre, per il calcolo della Pasqua, avrei anche questo:
' CALCOLO DELLA PASQUA
Function Easter(year As Integer) As Date
Dim d As Integer
d = (((255 - 11 * (year Mod 19)) - 21) Mod 30) + 21
Easter = DateSerial(year, 3, 1) + d + (d > 48) + 6 - _
((year + year \ 4 + d + (d > 48) + 1) Mod 7)
End Function
... che però non ho idea di come e dove implementare il tutto.
Qualche suggerimento in merito?