eric leissler France Membre Simple # 0000002784 enregistré le 06/03/2010 http://www.aumeric.fr 68 ans LEISSLER Eric 85290 MORTAGNE SUR SEVRE de la société AUMERIC LOGICIELS Fiche personnelle
Note des membres pas de note
Contributions > 01 - PRG : Programmation
calcul divers, heurs de nuits, jours fériès, test périodes etc...
# 0000000798
ajouté le 25/05/2011 12:47:09 et modifié le 25/05/2011
consulté 9052 fois
Niveau
débutant
*!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 08/2000 *!* *!* *!* syntaxe d'appel : dift("01:00:00","00:40:00") --> "0000:20:00" *!* retourne la différence entre une heure de début et une heure de fin *!* ex : hdebut=time() *!* select champs1,champs2 from madatabase!matable where monchamx="truc" *!* hfin=time() *!* ? " J'ai fait ma requête en "+ dift(hfin,hdebut) *!* *!************************************************** Parameters t1,t2 Local heu,min1,s,h2,min2,sec2,r,rh1,rs1,rh,rm,rs,retour IfInlist("",Alltrim(t1),Alltrim(t2)) Return"" Endif
m.rh=0
m.rm=0
m.rs=0
m.heu=Substr(t1,1,(At(":",t1)-1))
m.min1=Substr(t1,4,2)
m.s=Substr(t1,7,2)
m.heu=Val(heu)
m.min1=Val(min1)
m.s=Val(s)
m.heu=heu*60
m.min1=min1*60
m.s=s+min1+(heu*60)
m.h2=Substr(t2,1,(At(":",t2)-1))
m.min2=Substr(t2,4,2)
m.sec2=Substr(t2,7,2)
m.h2=Val(h2)
m.min2=Val(min2)
m.sec2=Val(sec2)
m.h2=h2*60
m.min2=min2*60
m.sec2=sec2+min2+(h2*60) If m.sec2>m.s
m.r=m.sec2-m.s Else
m.r=m.s-m.sec2 Endif
m.retour=nvertem(m.r) Return m.retour
Function temvern *!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 08/2000 *!* *!* *!* syntaxe d'appel : temvern(time) ---> 42321.0000 pour 11 h 45 21 '' *!* retourne l'heure en forme de nombre de secondes écoulées depuis 00 h 00 m 00 s *!* *!* *!* *!************************************************** Parameters temp1
m.temp1=Alltrim(m.temp1) Local s,m,h,retour
m.s=Substr(m.temp1,Len(m.temp1)-1,2)
m.s=Val(m.s)
m.m=Substr(m.temp1,Len(m.temp1)-4,2)
m.m=Val(m.m)*60
m.h=Substr(m.temp1,1,Len(m.temp1)-6)
m.h=Val(m.h)*3600
m.retour=m.h+m.m+m.s Return m.retour
Function nvertem *!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 08/2000 *!* *!* *!* syntaxe d'appel : nvertem(42321.0000) ----> "00011:45:21" *!* retourne l'heure en forme de nombre de secondes écoulées depuis 00 h 00 m 00 s *!* *!* *!* *!************************************************** Parameters temp1
temp1=Int(temp1) Local s,m,h,resth,restm
m.h=Int(m.temp1/3600)
m.resth=Mod(m.temp1,3600)
m.m=Int((m.resth)/60)
m.restm=Mod(m.m,60)
m.s=Int(Mod(m.resth,60)) ReturnPadl(m.h,5,"0")+":"+Padl(m.m,2,"0")+":"+Padl(m.s,2,"0")
Function nombrepage() *!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 08/2000 *!* *!* *!* syntaxe d'appel : nombrepage() *!* retourne le nombre de page d'un état *!* A placer dans un objet en tête d'état *!* *!* *!************************************************** Local nenr,retour
m.nenr=Recno() GoBottom
m.retour= _Pageno Go nenr Return m.retour
Function editstruct *!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 05/1996 *!* *!* *!* syntaxe d'appel : editstruct() *!* retourne la structure des tables du dossier courant dans un fichier structuredestables.txt *!* *!* *!* *!************************************************** Local a_tableau,cl_num,i Dimension a_tableau(1,10)
cl_num=Adir(a_tableau,"*.dbf") Asort(a_tableau,1)
SetPrinterTo structuredestables.txt SetPrintOn For i = 1 To cl_num If ! Empty(a_tableau(i,1)) Use (a_tableau(i,1)) In 0 SharedAlias toto Select toto DisplayStructureNoconsoleToPrint Use Else Exit Endif Next i SetPrintOff SetPrinterTo Return
Function calcheurnuit
*!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 04/2002 *!* *!* *!* syntaxe d'appel : calcheurnuit("15:00:00","24:50:00","22:00",06:00") -->> "02:50:00"
*!* retourne le temps effectué en période de nuit *!* IMPORTANT: mettre le début et la fin des heures de nuits sous la forme "HH:MM" *!* *!* *!**************************************************
Function mi_nutes(hm) *!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 04/2002 *!* *!* *!* syntaxe d'appel : mi_nutes("10:00:00") -->> 600.00 *!* retourne le nombre de mintues d'un horaire sous la forme "HH:MM:SS" *!* *!* *!* *!**************************************************
Return (Val(Left(hm,2))*60)+Val(Substr(hm,4,2))
Function toujourspositif(monparam) *!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 03/1995 *!* *!* *!* syntaxe d'appel : toujourspositif(-230) --> 230 *!* retourne le nombre toujours positif *!* *!* *!* *!**************************************************
Local retour If monparam <0
retour=monparam*-1 Else
retour=monparam Endif
Return retour
Function testperiode *!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 06/2003 *!* *!* *!* syntaxe d'appel : testperiode(ctod("01/06/2003"),ctod("03/07/2003"),ctod("15/06/2003"),ctod("15/09/2003")) *!* retourne le nombre vrai (.t.) si une période et contenue dans une autre et faux(.f.) si elle ne l'est pas *!* *!* ex un contrat du 01/06/2033 au 03/07/2003 possède t il des jours dans la période du 15/06/2003 au 15/09/2003 *!* *!**************************************************
Local cl_logique
cl_logique=.F. IfParameters()=4 DoCase Case datedebutcontrat > datefinmois
cl_logique=.F. Case datefincontrat < datedébutmois
cl_logique=.F.
Function JOUVRES( ma_DATEDEB,ma_DATEFIN) *!* ------------------------- FONCTION AUMERIC *!* Eric LEISSLER : 06/2003 *!* *!* *!* syntaxe d'appel : jouvres(ctod("01/06/2003"),ctod("03/07/2003")) --> 24 *!* retourne le nombre de jour ouvrés dans la période des deux dates fournies en paramètres *!* *!* *!* *!************************************************** Local i,retour,Comb,j
retour=0
Comb=(ma_DATEFIN-ma_DATEDEB+1) For i=1 To Comb
j=i-1
retour=retour+Iif(Between(Dow(ma_DATEDEB+j),2,6),1,0) Next i Return retour
le 26/05/2011, eric leissler a écrit : bonjour mike ou 24:50 les utilisateurs sont habitués à mettre 24:50 pour 00:50 et 26:50 pour 02:50; Ca leur evite des confusions. il me semble que avec 00:50 ca fonctonnait aussi mais je ne m'en rappelle plus!
le 24/07/2014, Damonzon a écrit : Ce que vous venez de publier me rappelle aussi un vieux souvenir. avec le Cobol, j'avais implanté un calendrier de 10 ans allant de 1988 à 1998. Ca me permettait de saisir les heures supplémentaires efféctuées selon le jour ouvrable et/ou férié. avec VFP9 je n'ai pas essayé parce que j'ai pas trouvé l'approche, si vous avez une idée ou une solution elle serait la bienvenue. Merci d'avance.
24:50?