1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| // Résumé : <indiquez ici ce que fait la procédure>
PROCEDURE Deduction_vacances(dDateDebut,dDateFin)
nDiff est un entier
nCpt, nTotal est un entier
rs est une Source de Données
sSQL est une chaîne
sSQL = [
SELECT
Vacances.Txt_vacances,
Vacances.Debut_vacances,
Vacances.Fin_vacances
FROM Vacances
WHERE
'%1' BETWEEN Debut_vacances AND Fin_vacances
OR
'%2' BETWEEN Debut_vacances AND Fin_vacances
OR
Debut_vacances BETWEEN '%1' AND '%2'
]
sSQL = ChaîneConstruit(sSQL,dDateDebut,dDateFin)
SI PAS HExécuteRequêteSQL(rs,hRequêteDéfaut,sSQL) ALORS
Erreur(HErreurInfo())
RENVOYER 0
FIN
SI HNbRec(rs) > 0 ALORS
//-- j'ai la liste des vacances qui tombent dans la période --
POUR TOUS rs
SI rs.Debut_vacances < dDateDebut ET rs.fin_vacances < dDateFin ALORS
// |<------ vacances-----|debut|------>| -------- | fin |
nCpt = DateDifférence(dDateDebut,rs.Fin_vacances)
SINON
SI rs.Debut_vacances > dDateDebut ET rs.fin_vacances > dDateFin ALORS
// |debut|-----------|< ------ vacances ------|fin|--------->|
nCpt = DateDifférence(rs.Debut_Vacances, dDateFin)
SINON
SI rs.debut_vacances > dDateDebut ET rs.fin_vacances < dDateFin ALORS
//|debut|----|<---- vacances ----->|-----|fin|
nCpt = DateDifférence(rs.Debut_Vacances, rs.fin_vacances)
SINON
// |<-----------vacances -----|debut| ---------|fin| ---------->|
nCpt = DateDifférence(dDateDebut,dDateFin)
FIN
FIN
FIN
nTotal += nCpt
FIN
FIN
RENVOYER nTotal |
Partager