Controle sur période entre 2 dates

Le
Bonsoir à tous,

Dans un formulaire de saisie en mode continu, j'ai 2 dates soit Date_Deb et
Date_Fin.

Lors de chaque saisie, je souhaiterai controler qu'il n'y ai pas de dates "à
cheval" ou de superpositions de périodes.

Exemple :

du 01/06/08 au 15/06/08 => enregistrement existant N°1
du 20/06/08 au 25/08/08 => enregistrement existant N°2


SAISIES IMPOSSIBLES :

du 10/06/08 au 17/06/08 => période impossible car doublons sur les dates du
10-11-12-13-14 juin
du 17/06/08 au 31/08/08 => période impossible car doublons sur toutes kes
dates de l'enregistrement N°2


1 )Quelqu'un peut-il SVP m'éclairer sur le code VBA et/ou fonction à
utiliser et sur quel évènement le placer (BeforeUpdate ou AfterUpdate des 2
controles date ??)
2) Existe-il une fonction ou requête permettant de lister les dates en
"doublon" ou périodes communes à 2 intervalles de dates (à 2
enregistrements)

D'avance merci
A bientôt

Bernard
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #6769561
Salut,

| Dans un formulaire de saisie en mode continu, j'ai 2 dates soit Date_Deb et
| Date_Fin.
|
| Lors de chaque saisie, je souhaiterai controler qu'il n'y ai pas de dates "à
| cheval" ou de superpositions de périodes.
|
| Exemple :
|
| du 01/06/08 au 15/06/08 => enregistrement existant N°1
| du 20/06/08 au 25/08/08 => enregistrement existant N°2
|
|
| SAISIES IMPOSSIBLES :
|
| du 10/06/08 au 17/06/08 => période impossible car doublons sur les dates du
| 10-11-12-13-14 juin
| du 17/06/08 au 31/08/08 => période impossible car doublons sur toutes kes
| dates de l'enregistrement N°2
|
|
| 1 )Quelqu'un peut-il SVP m'éclairer sur le code VBA et/ou fonction à
| utiliser et sur quel évènement le placer (BeforeUpdate ou AfterUpdate des 2
| controles date ??)
| 2) Existe-il une fonction ou requête permettant de lister les dates en
| "doublon" ou périodes communes à 2 intervalles de dates (à 2
| enregistrements)


Tu pourrais faire un DCount() qui vérifie pour chaque valeur saisie, si elle
se trouve entre la date_deb et dat_fin d'un enregistrement de la table.

Dcount("*","T_Periode",Format([Date_Deb],"#mm-dd-yyyy#")
& " Between [Date_Deb] And [Date_Fin]")

La même chose pour [Date_Fin]

Ensuite, il faudra encore vérifier si une nouvelle période englobe une période
déjà existant...

DCount("*","T_Periode",Format([Date_Deb],"#mm-dd-yyyy#") & "<=[Date_Deb] AND "
& Format([Date_Fin],"#mm-dd-yyyy#") & ">=[Date_Fin]")

Si l'un des tests ramène autre chose que zéro, il y a chevauchement...

Bref, c'est quelque chose comme ca ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Le #6777601
Merci beaucoup Pierre, celà correspond à mes attentes.

A bientôt,
Bernard


"3stone"
Salut,

| Dans un formulaire de saisie en mode continu, j'ai 2 dates soit Date_Deb
et
| Date_Fin.
|
| Lors de chaque saisie, je souhaiterai controler qu'il n'y ai pas de
dates "à
| cheval" ou de superpositions de périodes.
|
| Exemple :
|
| du 01/06/08 au 15/06/08 => enregistrement existant N°1
| du 20/06/08 au 25/08/08 => enregistrement existant N°2
|
|
| SAISIES IMPOSSIBLES :
|
| du 10/06/08 au 17/06/08 => période impossible car doublons sur les dates
du
| 10-11-12-13-14 juin
| du 17/06/08 au 31/08/08 => période impossible car doublons sur toutes
kes
| dates de l'enregistrement N°2
|
|
| 1 )Quelqu'un peut-il SVP m'éclairer sur le code VBA et/ou fonction à
| utiliser et sur quel évènement le placer (BeforeUpdate ou AfterUpdate
des 2
| controles date ??)
| 2) Existe-il une fonction ou requête permettant de lister les dates en
| "doublon" ou périodes communes à 2 intervalles de dates (à 2
| enregistrements)


Tu pourrais faire un DCount() qui vérifie pour chaque valeur saisie, si
elle
se trouve entre la date_deb et dat_fin d'un enregistrement de la table.

Dcount("*","T_Periode",Format([Date_Deb],"#mm-dd-yyyy#")
& " Between [Date_Deb] And
[Date_Fin]")

La même chose pour [Date_Fin]

Ensuite, il faudra encore vérifier si une nouvelle période englobe une
période
déjà existant...

DCount("*","T_Periode",Format([Date_Deb],"#mm-dd-yyyy#") & "<=[Date_Deb]
AND "
& Format([Date_Fin],"#mm-dd-yyyy#") & ">=[Date_Fin]")

Si l'un des tests ramène autre chose que zéro, il y a chevauchement...

Bref, c'est quelque chose comme ca ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Publicité
Poster une réponse
Anonyme