PDA

Visualizza la versione completa : [vb] elenco festività


cubeccu
29-07-2002, 21:40
salve,
conoscete una funzione che mi dica se un giorno è festivo oppure no?

steno12
30-07-2002, 01:05
Non solo ma dovresti anche sapere se è domenica e se la domenica capita il 25 di natale ovvero festività doppia:

questa è una funziona per sapere la festività di pasqua dell'anno corrente:

annoh% = Year(Now())
ps$ = Format$(PasquaGregoriana(annoh%), "dd/mm")


Public Function PasquaGregoriana(annoh%) As Date
Dim ah%, bh%, ch%, ph%, qh%, rh%
ah = annoh% Mod 19: bh = annoh% \ 100: ch = annoh% Mod 100
ph = (19 * ah + bh - (bh \ 4) - ((bh - ((bh + 8) \ 25) + 1) \ 3) + 15) Mod 30
qh = (32 + 2 * ((bh Mod 4) + (ch \ 4)) - ph - (ch Mod 4)) Mod 7
rh = (ph + qh - 7 * ((ah + 11 * ph + 22 * qh) \ 451) + 114)
PasquaGregoriana = DateSerial(annoh%, rh \ 31, (rh Mod 31) + 1)
End Function

ps$ contiene il giorno e il mese
se vuoi la data completa aggiungi l'anno:
ps$=ps$ & "/" & year(date)
--------------------------------------

questo sotto è per sapere se l'anno è bisestile e cioè porat il 29 di FEBraio, esem(2) e il vettore numero 2 della matrice esem(12) che appunto corrisponde a febraio

aa$ = Year(Date)
bise$ = "29/02/" + aa$
If Format(bise$) = True Then esem(2) = 29: GoTo 100
esem(2) = 28
100

----------------------------------------

Per sapere i giorni della settimana:

dato$ = date
sett = Weekday(dato$)

If sett = 1 Then a = 7 'a=7 è estrapolato dal codice del mio prg
If sett = 2 Then a = 1 'a te no nserve
If sett = 3 Then a = 2
If sett = 4 Then a = 3
If sett = 5 Then a = 4
If sett = 6 Then a = 5
If sett = 7 Then a = 6
Rem vbSunday 1 Domenica (predefinita)
Rem vbMonday 2 Lunedì
Rem vbTuesday 3 Martedì
Rem vbWednesday 4 Mercoledì
Rem vbThursday 5 Giovedì
Rem vbFriday 6 Venerdì
Rem vbSaturday 7 Sabato
----------------------------------

questa è una condizione per sapere i festivi dell'anno in corso, ora non mi và di vedere il calendario, fallo tuo e correggi le righe or con le festività nuove o soppresse:

If i = 7 Or i = 14 Or i = 21 Or i = 28 Or i = 35 Or i = 42 Or ed$ = psq$ Or ed$ = ps$ Or ed$ = "01/01" Or ed$ = "01/06" Or ed$ = "05/04" Or ed$ = "25/04" Or ed$ = "01/05" Or ed$ = "15/08" Or ed$ = "01/11" Or ed$ = "08/12" Or ed$ = "25/12" Or ed$ = "26/12" Then
'FESTIVE unita(4) (5) (6)
dom = 0
If ed$ = psq$ Or ed$ = ps$ Or ed$ = "01/01" Or ed$ = "01/06" Or ed$ = "05/04" Or ed$ = "25/04" Or ed$ = "01/05" Or ed$ = "15/08" Or ed$ = "01/11" Or ed$ = "08/12" Or ed$ = "25/12" Or ed$ = "26/12" Then dom = 1: GoTo 888

il giorno di pascqua è la variabile psq$ che riceve il dato della domenica oppure solo festivo:

se dom=1 la festività è di domenica.

i=7 ecc, ecc fà parte del ciclo for da 1 a 42 per il mio calendario
in quanto il primo del mese domenicale, nel calendario và messo nella variabile i =7 poi 14 e così via, hai presente i calendario di windows.........dagli un occhiata che capisci subito.




L'ho estrapolato da un mio prg di qualche anno fà, ma si dovrebbe capire........comunque...........



link
homepage
http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
software
http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/programmi/programmi.html
forum
http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/public/twforum/default.asp

Loading