Bonjour à tous.
Dans l'ordre :
Envoyé par
jpcheck
salut,
tu as pris la bonne piste de départ
Me!Date_Début > DateSerial(Year(DT_STRT), 7, 1)
maintenant, les questions que "nous" allons te poser pour que tu continuer à avancer :
- comment connais-tu l'année de la demande de chasser ?
L'année de la demande de chasser est incluse dans le champ Date_Début (exemple :un chasseur veut pouvoir commencer à chasser le 15 juin 2009)
Envoyé par
jpcheck
- comment en déduis-tu les dates de début et de fin d'autorisation sur l'année en question ?
Au même titre que le chasseur indique la date à laquelle il souhaite commencer à chasser, il indique la date à laquelle il souhaite arrêter de chasser (exemple : Date_Fin)
Envoyé par
jpcheck
- comment testes-tu le chevauchement éventuel des dates posées par rapport à celles légales
Je vérifie que ni la date de début, ni la date de fin ne soient supérieures à la date de début de la période d'interdiction et inférieures à la date de fin de la période d'interdiction, un peut comme proposé par helas et cité ci-dessous :
Envoyé par
helas
peut-être ceci
1 2
|
(cdate(me!Date_début)< dateserial(year(me!Date_début),7,1)) And cdate(me!Date_début)> (dateserial(year(me!Date_début),8,15)) |
Quelle est la fonction de cdate ? j'arrive à faire la comparaison ci-dessus sans utiliser cdate, juste en indiquant :
Me!Date_début < dateserial(year(me!Date_début),7,1)) And Me!Date_début > (dateserial(year(me!Date_début),8,15))
De plus, ce code possède une tare : les dates de demande, par exemple la date de début, ne sont comparées qu'avec l'année de la date de demande.
Exemple :
Si un chasseur indique une date de début au 15 juillet 2009, l'application va tilter en repérant que cette date est post 1er juillet de l'année de la demande, soit post 1er juillet 2009.
Si pour quelque raison que ce soit, cette même demande est retraitée en 2010, la vérification sera bancale.
Bien sur que la condition sera de nouveau vérifiée, la demande pour le 15 juillet 2009 sera toujours au de la du premier juillet de l'année de la demande soit le 1er juillet 2009…
Mais il me semble que la bonne façon de procéder serait que l'application surveille que la date ne soit pas comprise entre les 1er juillet et le 15 septembre, quelque soit l'année.
Envoyé par
nico84
Bonsoir,
Un moyen simple de comparer des (parties de) dates consiste à les convertir en chaines de caractère. Pour que l'ordre soit "logique" (ordre alphabétique=ordre calendaire) il faut les inverser : année puis mois puis jour et si besoin heure, minute... (dans ton cas mois puis jour seulement).
Exemples :
1 2 3 4
| if format(date_saisie,"mmdd")=format(date_naissance,"mmdd") then msgbox "Bon anniversaire !!!"
if format(date_saisie,"mmdd")>format(date_naissance,"mmdd") then msgbox "C'est passé cette année :("
if format(date_saisie,"mmdd")>"0321" and format(date_saisie,"mmdd")<="0621" then msgbox "C'est le printemps :)"
if format(now,"hhmm")>"1630" and format(now,"hhmm")<="1700" then msgbox "Tea time !" |
Les fonctions year, month, day... sont probablement plus rapides donc à privilégier dans les cas simples
Pas mal cette idée qui m'apparaît comme la bonne solution. Je vais essayer de ce pas…
Y a t il des risques ou des limites qui font que l'on voit plus souvent les Year etc… ?
Encore merci à tous.
Partager