[Access] Vérifier la présence d'1 mois

Utilisateur anonyme -  
 Jerry21 -
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce problème, et je commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois d'août et compris dans la période, le décompter (la période peut aller, allez on va dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais je n'arrive pas à différencier tous les cas possibles à cause de cette possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !
TCHUZZZZZZ
A voir également:

10 réponses

blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Salut,

Il existe la fonction datediff qui permet de donner le nombre de jours, mois, années séparant deux dates.

Ex:
SELECT DATEDIFF("m",datedebut,datefin) from table;
donne le nombre de mois séparant les deux dates...

Ensuite, il faut savoir combien d'années entières on a pour enlever les mois d'aout, et mixer le tout mais c'est quasiment impossible de faire ça avec une requête SQL classique...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
Utilisateur anonyme
 
Salut Blux et merci.

Mais on m'a donné la solution, en créant une fonction.

Je te mets le code, ça marche parfaitement :


Function NbMonth(dtDeb As Date, dtFin As Date)

    Dim i%, dt As Date
    Dim nbAugust As Integer

    For i = Year(dtDeb) To Year(dtFin)
        dt = CDate("01/08/" & i)
        If dt > dtDeb And dt < dtFin Then nbAugust = nbAugust + 1
    Next
    NbMonth = DateDiff("m", dtDeb, dtFin) - nbAugust

End Function



@+
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Y'a pas de problème !

Mais si tu avais indiqué que l'on pouvait utiliser autre chose que des requêtes, je t'aurais sûrement proposé cette solution ! :-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
Utilisateur anonyme
 
Je n'ai jamais dit qu'il fallait que j'utilise exclusivement des requête, car là j'appelle cette fonction dans la requête et ça tourne.

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Tout ça, je dois le vérifier dans une requête
C'est ce que j'ai cru lire :-)))

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
random
 
il faut connaitre le nombre de mois d'aout

on prend une date elo iignée comme repère mais au 1 9
on fait
diffdate(mois;date1;date eloignée)
si on fait la division entière par 12 on obtient le nombre d'aout
donc
diffdate(mois;date1;date eloignée)\12
on reprend pour l'autre date
diffdate(mois;date2;date eloignée)\12
la difference de ces valeurs est le nombre d'aout dans la période
donc formule pour sql
DiffDate("m";[d1];[d2])+(DiffDate("m";#01/09/1990#;[d1])\12)-(DiffDate("m";#01/09/1990#;[d2])\12)

elle est pas belle la vie ?
0
Utilisateur anonyme
 
Merci random, mais on m'a déjà donné la réponse, regardes au post <2>.

@+
0
Jerry21 Messages postés 104 Statut Membre 25
 
Bonjour , j'aimerais que vous m'aidiez si c'est possible pour vous.
J'ai créer un base de données elle fonctionne bien sauf que j'aimerais que lorsque je saisi une nouvelle entrée dans une de mes tables que la date du jour y soit sauvegardé automatiquement ( sans que celle ci change à toute les jours Bien sure) dans mon champ Date_du_jour.

Est ce possible?!?! Merci à l'avance

<Ne prend pas ton temps car le temps ne t'attend pas.>
0
random Messages postés 1612 Statut Membre 155
 
tu utilises un formulaire
tu mets le champ de ta date à now()
et tu lances
elle est pas belle, la vie ?
0
Jerry21
 
Merci pour ton aide précieuse , mais j'aimerais que cette valeur Date() soit aussi stocker dans le champs Date_du_jour pour que je puisse par la suite créer une requête qui va me sortir tout les entrées inscrite entre deux dates données

Merci à l'avance
0
Jerry21
 
OK j'ai trouver , tu m'as placer sur le bon chemin je t'en remerci beaucoup. J'ai fait la même procédure mais dans les propriétés (mode création) de la table . Dans "valeur par default" J'ai écrit =Date()
J'avais déjà essayé cette procédure mais malheureusement il me manquait le signe "=" en début.

Merci tu m'as aiguillé vers la bonne solution.
0