241 messaggi dal 02 ottobre 2001
Mi sto scervellando su questo problema...

Ho una data e un certo numero di giorni lavorativi. Lo scopo è calcolare la data finale passati i giorni lavorativi, escludendo i sabati e le domeniche e le eventuali feste, che sono in una tabella di database.
Qualche anima pia è così gentile da darmi qualche dritta?
Possibilmente con qualche riga di codice....
Grazie a tutti
9 messaggi dal 09 agosto 2001
-
Modificato da enrico23 il 10 maggio 2003 17.06 -
879 messaggi dal 09 luglio 2002
www.i-studio.it
Ciao,
ho affrontato questo problema un po' di tempo fa in una applicazione.
Una soluzione e' questa:
devi creare una funzione che prende due parametri, la data iniziale e il numero di giorni da aggiungere. La funzione deve eseguire una specie di "ciclo" che somma uno ad uno un giorno alla data di partenza. Di volta in volta, se la data ottenuta e' un sabato, una domenica o uno dei giorni festivi che hai nella tua tabella, devi saltare quella data e passare a quella successiva.
Alla fine, avra un numero "reale" di giorni lavorativi che devi sommare alla data di partenza per avere la data finale.

Es:

function calcolaData(dataStart, numGiorni)
numGiorniEffettivi = 0
i = 1
do while (numGiorniEffettivi < numGiorni)
tmpData = DateAdd("d", i, dataStart)
if weekday(tmpData, 2) <> 6 AND weekday(tmpData, 2) <> 7 then
sql = "SELECT...." ' <--- scrivi la query che verifica se quella data corrisponde ad un giorno festivo
.... ' <--- esegui la query
if ....  ' <--- esegui il controllo per capire se la data non e' festiva
numGiorniEffettivi = numGiorniEffettivi + 1
end if
end if
i = i + 1
loop
calcolaData = DateAdd("d", numGiorniEffettivi, dataStart)
end function


Spero che sia tutto esatto!

Ciao
Alex

Modificato da alex.iava il 12 maggio 2003 10.37 -

Internetworking Studio Srl
www.i-studio.it
71 messaggi dal 16 gennaio 2003
come faccio a controllare come dici tu le date dal Database delle festività?
879 messaggi dal 09 luglio 2002
www.i-studio.it
Ciao,
la cosa piu' semplice e' creare una tabella strutturata con due campi:
un campo mese ed un campo giorno.
In pratica, li dentro inserisci le date che corrispondono ai giorni festivi (se vedi su un calendario ti accorgi che sono poche: 1 gennaio, 6 gennaio, 25 aprile, 2 giugno, 15 agosto, ecc.).
Quando hai questa tabella piena, fai una query che vede se una certa data corrisponde ad un giorno festivo.
A parte quelli "standard", l'unico giorno festivo difficile da calcolare e' il Lunedi dell'Angelo. Esiste pero' un algoritmo che ti controlla quando viene Pasqua in un particolare anno. Trovata la Pasqua hai anche il Lunedi dell'Angelo.
Se cerchi con google lo trovi sicuramente. Se non ci riesci, fammelo sapere, dovrei riuscire a recuperarlo da qualche parte...

Ciao
Alex


Internetworking Studio Srl
www.i-studio.it
71 messaggi dal 16 gennaio 2003
se vuoi sapere tutta la verità lo sto cercando da circa un mese se me lo fornisci mi faresti un grande farvore
241 messaggi dal 02 ottobre 2001
ecco la mia soluzione

Dunque..intanto ho costruito una teblla "feste" con le date dei festivi (ma solo se sono giorni feriali, quindi escludendo i sabati e le domeniche)....

Poi la prima variabile è il numero di giorni (=giorni, nello script sotto) lavorativi da contare; la seconda è la data iniziale....


praticamente il ciclo è
somma 1 alla data se non è una festa , nè un sabato allora
è un giorno lavorativo.....
aumenta il ciclo finchè i giori lavorativi contati sono i giorni cercati
In mezzo c'è il cambio data italiana-data inglese per confrontarlo con l'elenco delle feste
Il cuore dello script è:

contatore="0"
Do while not giorni_lavorativi=giorni
data_inizio=data_inizio+1
dayita=DatePart("d", data_inizio)
monthita= DatePart("m", data_inizio)
yearita= DatePart("yyyy", data_inizio)
festa= yearita & "-" & monthita & "-" & dayita%>
<!--#include file="../query/select/seleziona_festa.inc"-->
<%
If weekday(data_inizio)<>"7" AND weekday(data_inizio)<>"1" AND rsfesta.eof then
giorni_lavorativi=giorni_lavorativi+1
End if
contatore=contatore+1%>
<!--#include file="../query/chiusura/chiudi_rsfesta.inc"-->
241 messaggi dal 02 ottobre 2001
Un calcolo della data della pasqua è qui:


http://digilander.libero.it/acqua67/calcolo%20della%20data%20di%20pasqua.htm

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.