Giorni festivi sab e dom

di il
4 risposte

Giorni festivi sab e dom

Buonasera ragazzi, ho un problema, devo creare un evento in base ai giorni festivi, ho già trovato qualche esempio però non lo riesco ad integrarlo con il mio codice, inizialmente ho utilizzato questo:

Private Sub data_inizio_Change()
If Weekday([data inizio].Text, vbMonday) = 6 Or Weekday([data inizio].Text, vbMonday) = 7 Then
Forms![18_aggiungi interventi in reperibilità]![ore str festivo].Visible = True
Forms![18_aggiungi interventi in reperibilità]![Etichetta57].Visible = True
Forms![18_aggiungi interventi in reperibilità]![ore str].Visible = False
Forms![18_aggiungi interventi in reperibilità]![Etichetta55].Visible = False
Else
Forms![18_aggiungi interventi in reperibilità]![ore str festivo].Visible = False
Forms![18_aggiungi interventi in reperibilità]![Etichetta57].Visible = False
Forms![18_aggiungi interventi in reperibilità]![ore str].Visible = True
Forms![18_aggiungi interventi in reperibilità]![Etichetta55].Visible = True
End If
End Sub

praticamente se nel campo data inserisco un giorno che sia sabato o domenica mi compaiono i campi festivi, viceversa i feriali (è un codice forse un po' spartano però è funzionante).

ora voglio fare in modo che oltre ai fine settima volevo inserire anche le festività nazionali e cercando su internet ho trovato questo:

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)
Festivo = True

'6.GENNAIO - EPIFANIA
Case DateSerial(year(myDate), 1, 6)
Festivo = True

'25. APRILE - LIBERAZIONE
Case DateSerial(year(myDate), 4, 25)
Festivo = True

'1. MAGGIO FESTA LAVORATORI
Case DateSerial(year(myDate), 5, 1)
Festivo = True

'2. GIUGNO FESTA DELLA REPUBBLICA
Case DateSerial(year(myDate), 6, 2)
Festivo = True

'PASQUA
Case Easter(year(myDate))
Festivo = True

'LUNEDI DI PASQUA
Case Easter(year(myDate)) + 1
Festivo = True

'15. AGOSTO
Case DateSerial(year(myDate), 8, 15)
Festivo = True

'1. NOVEMBRE - TUTTI I SANTI
Case DateSerial(year(myDate), 11, 1)
Festivo = True

'8. DICEMBRE - IMMACOLATA CONCEZIONE
Case DateSerial(year(myDate), 12,
Festivo = True

'25. DICEMBRE - NATALE
Case DateSerial(year(myDate), 12, 25)
Festivo = True

'26. DICEMBRE - SANTO STEFANO
Case DateSerial(year(myDate), 12, 26)
Festivo = True

' DATE DI FESTIVITA' LOCALI(PATRONO Ecc...)
'Case DateSerial(year(myDate), nn, nn)
' Festivo = True
'
' Per rendere più flessibile la parametrizzazione
' di Festività LOCALI si potrebbe usare una Tabella
' e recuperare il RS con la Data...!
' Case ELSE
' Dim rs as DAO.Recordset
' sSQL="SELECT * FROM Tb_FesteLocali " & _
' "WHERE Data=#" & Format$(myDate,"yyyymmdd") & "#"
' set rs=DbEngine(0)(0).OpenRecordset(sSQL, _
' dbOpenDynaset,dbReadOnly)
' ' Se il rs è vuoto significa che la data non è inserita
' come FESTIVITA'
' Festivo=NOT rs.Eof
' rs.Close
' Set rs=Nothing
End Select
End Function

' 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

dove mi elencano le festività compreso il calcolo della Pasqua, il mio problema è che non riesco ad integrare questo codice a quello scritto in precedenza…sono consapevole di essere una pippa

Vi ringrazio anticipatamente

4 Risposte

  • Re: Giorni festivi sab e dom

    Usa i tag CODE per il codice nel forum!

    Comunque, hai due funzioni, le chiami passando la data e ottieni False o True per capire se è festivo o no.
  • Re: Giorni festivi sab e dom

    Il codice cui ti riferisci mi pare di conoscerlo...
    Devi passare una data alla funzione e restituisce True/False se è festivo... e prendere la proprieta Text su evento Change sei sicuro vada bene...? Hai debuggato cosa succede...?
    
    If Festivo(Me!ControlloData.value) then
      Msgbox "Sono festivo"
    Else
      Msgbox "Non sono festivo"
    End if
    
  • Re: Giorni festivi sab e dom

    Salve ragazzi sono riuscito ad adattare il codice di Alex alle mie esigenze e funziona tutto, ultimissimo problema (si spera), sempre nel codice che vi ho copiato dei giorni feriali e che da quello che ho capito conoscevate tutti tranne che io , mi da addirittura la possibilità di inserire le feste patronali.
    vi posto il codice (che già conoscete)
    ' DATE DI FESTIVITA' LOCALI(PATRONO Ecc...)
    Case DateSerial(year(mydate), nn, nn)
    Festivo = True
    '
    ' Per rendere più flessibile la parametrizzazione
    ' di Festività LOCALI si potrebbe usare una Tabella
    ' e recuperare il RS con la Data...!
    ' Struttura della Tabella con le FESTIVITA LOCALI:
    ' Tb_FesteLocali
    ' Campi:
    ' Data---> Tipo(Data) PK
    ' Descrizione ---> Tipo(Testo)
    '
    Case Else
    Dim rs As DAO.Recordset
    sSQL = "SELECT * FROM 18altre festività " & _
    "WHERE Data=#" & Format$(mydate, "yyyymmdd") & "#"
    set rs=DbEngine(0)(0).OpenRecordset(sSQL,dbOpenDynaset,dbReadOnly)
    ' Se il rs è vuoto significa che la data non è inserita come FESTIVITA'
    Festivo = Not rs.EOF
    rs.Close
    Set rs = Nothing

    nel campo Data oltre ad impostarlo tipo(data) il termine PK a cosa corrisponde?
    perché nell'eseguire il comando mi da errore di variabile non definita in questa stringa "Case DateSerial(year(mydate), nn, nn)" evidenziandomi nn
    e l'ho definito così Dim nn as Date; continuando mi da' altro errore variabile non definita a questa stringa " sSQL = "SELECT * FROM 18altre festività " & _ " evidenziandomi sSQL e qui mi sono fermato mi sono fuso, eppure per le festività italiane non ci sono stati problemi, nelle festività patronali dove fa riferimento a una tabella mi sta creando problemi.
  • Re: Giorni festivi sab e dom

    gru ha scritto:


    Salve ragazzi sono riuscito ad adattare il codice di Alex alle mie esigenze e funziona tutto, ultimissimo problema (si spera), sempre nel codice che vi ho copiato dei giorni feriali e che da quello che ho capito conoscevate tutti tranne che io , mi da addirittura la possibilità di inserire le feste patronali.
    Lo conoscevo perche l'ho scritto io e solitamente quando si copia codice di altri si riporta la fonte.

    gru ha scritto:


    vi posto il codice (che già conoscete)
    ' DATE DI FESTIVITA' LOCALI(PATRONO Ecc...)
    Case DateSerial(year(mydate), nn, nn)
    Festivo = True
    '
    ' Per rendere più flessibile la parametrizzazione
    ' di Festività LOCALI si potrebbe usare una Tabella
    ' e recuperare il RS con la Data...!
    ' Struttura della Tabella con le FESTIVITA LOCALI:
    ' Tb_FesteLocali
    ' Campi:
    ' Data---> Tipo(Data) PK
    ' Descrizione ---> Tipo(Testo)
    '
    Case Else
    Dim rs As DAO.Recordset
    sSQL = "SELECT * FROM 18altre festività " & _
    "WHERE Data=#" & Format$(mydate, "yyyymmdd") & "#"
    set rs=DbEngine(0)(0).OpenRecordset(sSQL,dbOpenDynaset,dbReadOnly)
    ' Se il rs è vuoto significa che la data non è inserita come FESTIVITA'
    Festivo = Not rs.EOF
    rs.Close
    Set rs = Nothing

    nel campo Data oltre ad impostarlo tipo(data) il termine PK a cosa corrisponde?
    perché nell'eseguire il comando mi da errore di variabile non definita in questa stringa "Case DateSerial(year(mydate), nn, nn)" evidenziandomi nn
    e l'ho definito così Dim nn as Date; continuando mi da' altro errore variabile non definita a questa stringa " sSQL = "SELECT * FROM 18altre festività " & _ " evidenziandomi sSQL e qui mi sono fermato mi sono fuso, eppure per le festività italiane non ci sono stati problemi, nelle festività patronali dove fa riferimento a una tabella mi sta creando problemi.
    Il suggerimento prevede tu abbia una Tabella con campo Data e Campo Descrizione per sapere a che festività si fa riferimento...
    Quell'idea serve se ci sono delle varianti da gestire... se hai solo la data del patrono includila in uno dei case precedenti e basta.
Devi accedere o registrarti per scrivere nel forum
4 risposte