Pb script jours feriés

Résolu
isu_san Messages postés 63 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 26 juillet 2011 - 6 sept. 2006 à 11:43
isu_san Messages postés 63 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 26 juillet 2011 - 7 sept. 2006 à 17:36
Bonjour a tous. j'ai tenté d'utiliser ce scritp http://www.aspfr.com/codes/CALCUL-NOMBRE-JOURS-OUVRABLES-ENTRE-DEUX-DATES_8717.aspx et j'ai un soucis au niveau du resultat

je vous copie mon code :
<html>
<head>
<%
function nbjourouvrable(datdeb,datfin)
if datdeb="" or datfin="" then exit function
 
nbjourtot = DateDiff("d",datdeb,datfin) + 1
 
for i=1 to nbjourtot
 
  if ferie(datdeb) then
    nbjourtot = nbjourtot - 1
  end if
 
 datdeb=DateAdd("d",1,datdeb)
 
next
 
nbjour=nbjourtot
End function
 
function ferie(Jour)
if jour="" then exit function
Dim JJ,AA
Dim NbOr, Epacte
Dim PLune, Paques, Ascension, Pentecote
 
JJ = Day(Jour)
mm = Month(Jour)
AA = Year(Jour)
  If JJ 1 And mm 1 Then ferie = True: Exit Function '1 Janvier If JJ 1 And mm 5 Then ferie = True: Exit Function '1 Mai If JJ 8 And mm 5 Then ferie = True: Exit Function '8 Mai If JJ 14 And mm 7 Then ferie = True: Exit Function '14 Juillet If JJ 15 And mm 8 Then ferie = True: Exit Function '15 Août If JJ 1 And mm 11 Then ferie = True: Exit Function '1 Novembre If JJ 11 And mm 11 Then ferie = True: Exit Function '11 Novembre If JJ 25 And mm 12 Then ferie = True: Exit Function '25 Décembre
 
NbOr = (AA Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
PLune = CDate("19/04/" & AA) - ((Epacte + 6) Mod 30) If Epacte 24 Then PLune PLune - 1
If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1
 
Paques = PLune - Weekday(PLune) + vbMonday + 7 'Paques If JJ Day(Paques) And mm Month(Paques) Then ferie=true : Exit Function
 
Ascension = Paques + 38 'Ascension If JJ Day(Ascension) And mm Month(Ascension) Then ferie=true : Exit Function
 
'Pentecote = Ascension + 11 'Pentecote 'If JJ Day(Pentecote) And mm Month(Pentecote) Then ferie=true : Exit Function
ferie = False
Dim numjour
numjour=weekday(jour,vbmonday)     'fixe à 6 et 7 la valeur du samedi & dimanche
if numjour=6 or numjour=7 then ferie=true : Exit function
End function
%>
</head>

<form name="myform" method="get">


</form>


<%
dim cnt,trai,traitement
if request.querystring("date1")<>"" then
 date_debut=request.querystring("date1")
 date_fin=request.querystring("date2")
 dim ors
 dim objconn
 dim strconn
 set objconn = server.createobject("ADODB.connection")
 strconn= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("../../fpdb/ti.mdb")& ";Persist Security Info=False"
 objconn.open strconn
 reqsql = "select * from ti;"
 set ors = objconn.execute(reqsql)


 do while not ors.eof
 diff_debut=datediff("d",date_debut,ors("date1"))
 diff_fin=datediff("d",ors("date1"),date_fin)
 
  if (diff_debut>0 or diff_debut=0) and (diff_fin>0 or diff_fin=0) then
   cnt=cnt+1
   if ors("nature")<>"Circulaire" then
    if ors("date4")<>"01/01/1900" then
     trai=trai+1
     call nbjourouvrable(ors("date2"),ors("date4"))
     traitement=nbjour
     response.write(ors("date2"))
     response.write("
")
     response.write(ors("date4"))
     response.write("
")
     response.write(traitement)
     response.write("
")
     response.write("
")
    end if
   end if 
  end if
 ors.movenext
 loop
end if
 %>

</html>

pardon c'est un peu long....
bon je m'explique, dans ma base de donnée c'est une liste de document qui comporte differentes dates. date1 la date du document, date2 et date4 d'autres dates que je dois comparer pour recuperer le nb de jours ouvrés qui les separent. je dois faire cette comparaison pour tous les documents dont la date (date1) est comprise entre les dates du formulaires. (vous suivez toujours ??)

ca marche presque, mon probleme, et je ne comprends vraiment pas pourquoi c'est qu'il m'affiche tout ca, sauf pour la premiere ligne!! a priori sur la premiere opération la variable nbjourtot n'est pas reconnue...

aidez moi par pitié je vais devenir fou !!!

2 réponses

isu_san Messages postés 63 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 26 juillet 2011
7 sept. 2006 à 17:36
bon ben voila, pour une fois le newbbie a trouver tout seul...


 


merci a ceux qui ont cherché
3
isu_san Messages postés 63 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 26 juillet 2011
7 sept. 2006 à 11:12
Hello
Bon puisque ca n'a pas l'air de vous inspirer on va faire plus simple
toujours cette fonction:
function nbjourouvrable(datdeb,datfin)
if datdeb="" or datfin="" then exit function 
nbjourtot = DateDiff("d",datdeb,datfin) + 1 
for i=1 to nbjourtot 
  if ferie(datdeb) then
    nbjourtot = nbjourtot - 1
  end if 
 datdeb=DateAdd("d",1,datdeb) 
next 
nbjour=nbjourtot
End function 
function ferie(Jour)
if jour="" then exit function
Dim JJ,AA
Dim NbOr, Epacte
Dim PLune, Paques, Ascension, Pentecote 
JJ = Day(Jour)
mm = Month(Jour)
AA = Year(Jour) If JJ 1 And mm 1 Then ferie = True: Exit Function '1 Janvier If JJ 1 And mm 5 Then ferie = True: Exit Function '1 Mai If JJ 8 And mm 5 Then ferie = True: Exit Function '8 Mai If JJ 14 And mm 7 Then ferie = True: Exit Function '14 Juillet If JJ 15 And mm 8 Then ferie = True: Exit Function '15 Août If JJ 1 And mm 11 Then ferie = True: Exit Function '1 Novembre If JJ 11 And mm 11 Then ferie = True: Exit Function '11 Novembre If JJ 25 And mm 12 Then ferie = True: Exit Function '25 Décembre 
NbOr = (AA Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
PLune = CDate("19/04/" & AA) - ((Epacte + 6) Mod 30) If Epacte 24 Then PLune PLune - 1
If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1 
Paques = PLune - Weekday(PLune) + vbMonday + 7 'Paques If JJ Day(Paques) And mm Month(Paques) Then ferie=true : Exit Function 
Ascension = Paques + 38 'Ascension If JJ Day(Ascension) And mm Month(Ascension) Then ferie=true : Exit Function 
'Pentecote = Ascension + 11 'Pentecote 'If JJ Day(Pentecote) And mm Month(Pentecote) Then ferie=true : Exit Function
ferie = False
Dim numjour
numjour=weekday(jour,vbmonday)     'fixe à 6 et 7 la valeur du samedi & dimanche
if numjour=6 or numjour=7 then ferie=true : Exit function
End function

ensuite plus loin je fais

call nbjourouvrable(date1,date2)

ca fonctionne
mon soucis, c'est que je dois le faire plusieurs fois avec un while et que je n'arrive pas a recuperer le resultat de la fonction dans une variable. ou et quand dois je recuperer le resultat ???
0
Rejoignez-nous