Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3033 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Access]Problème date pour faire une recherche genre "mois dernier"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Access]Problème date pour faire une recherche genre "mois dernier"

n°806604
willyboy73
Posté le 26-07-2004 à 16:24:49  profilanswer
 

Bonjour! J'ai cherché sans réponse..alors je demande aux connaisseurs.
 
Je veux dans un formulaire, lister toutes les interventions faites chez un client sur une période saisie.
 
j'ai pour ça un formulaire de saisie de paramètres avec deux champs (txtdate1 et txtDate2). L'utilisateur clique sur rechercher et ça lance un form basé sur une requete type "select..... where dateInterv >= date1 and dateInterv <= txtDate2" ( pas complexe! )
 
Seulement voilà, pour faciliter les saisies de l'utilisateur, j'ai créé sur le form de saisie, trois boutons : "Intégralité";"Mois en cours"; "Mois Dernier"... quand par exemple l'utilisateur clique sur "Intégralité" , je remplis les champs txtDate1 par une 01/01/2004 et le champ txtDate2 par Date() comme cela ça balaye toutes les dates puisque la base n'a pas de date d'interventions inférieure au mois de juillet 2004.
 
Maintenant, là est ma question, comment faire pour les boutons "mois en cours, mois dernier "??? Ne sachant pas si la fin du mois est un 31 ou un 30 !!
 
Si je clique sur " Mois en Cours " voici mon code :
 
Form_MonForm.txtdate1.value = "01/"& Month(Date) & "/"& Year(Date)
Form_Monform.txtDate2.value = ??????
 
Voilà je sais pas comment faire parce que si je met 31 pour chaque mois ... il bug quand c'est un mois de 30 jours!
 
Si quelqu'un voit une autre façon de faire ou mon erreur? Merci

mood
Publicité
Posté le 26-07-2004 à 16:24:49  profilanswer
 

n°806627
Beegee
Posté le 26-07-2004 à 16:42:20  profilanswer
 

il faut pas le faire comme ça ...
Il faut que la traduction de 'mois en cours' ou 'mois dernier' soit dans le code, sous la forme d'une date: YYYYMM (année / mois), et que ta requête soit adaptée (comparaison uniquement sur mois / année).

n°806803
dalcap
Posté le 26-07-2004 à 18:03:39  profilanswer
 

bonjour,
une petite idée que tu pourrais essayer comme ça...
solution 1
date(01&(mois en cours+1)&année en cours) -1 jour ???
 
solution 2  
au lieu de prendre le dernier jour du mois, tu prends le premier jour du mois suivant, avec un inférieur strict...cela revient à la solution de beegee je crois
 
je ne sais pas du tout comment cela peut se traduire avec Access ou VB, je n'ai pas ça a disposition...
 
qu'en penses-tu ?


Message édité par dalcap le 26-07-2004 à 18:05:03
n°806883
Beegee
Posté le 26-07-2004 à 19:11:21  profilanswer
 

ce que je proposais était plus proche de l'apsect fonctionnel, ça revient à comparé les seules infos qu'on souhaite vraiment comparer (mois et année dans le cas du 'mois en cours' par exemple).
 
Mais la solution 1 de dalcap est intéressante, car elle permet de garder la même requête ;)

n°807230
dalcap
Posté le 27-07-2004 à 08:59:32  profilanswer
 

merci ;)
 
reste à savoir ce qui sera le plus facile à mettre en oeuvre dans son programme...
 
bon courage

n°807245
willyboy73
Posté le 27-07-2004 à 09:13:17  profilanswer
 

Bonjour à vous deux et un grand merci de vous occuper de mon cas !
 
La solution de Beegee je ne peux pas l'adapter parce qu'ils peuvent avoir à faire des bilans d'interventions sur 15 jrs voir une semaine ! Alors j'ai besoin des jours dans ma requête !  
 
Je vais essayer la solution de dacalp et je vous dis:
 
date(01&(mois en cours+1)&année en cours) -1 jour
 
;) @ tt'
 
 
 
 

n°807248
willyboy73
Posté le 27-07-2004 à 09:15:14  profilanswer
 

je viens de penser...  
 
date(01&(mois en cours+1)&année en cours) -1
 
... quand le " mois en cours" ce sera le mois décembre.. -> moisencours +1 ça va donner treize??

n°807301
dalcap
Posté le 27-07-2004 à 09:54:51  profilanswer
 

peut-être faudra-t-il rajouter un modulo, tu as raison,
 
toutefois, il faut tester... si le format date est bien géré, il se peut qu'il mette janvier 2005 au lieu de 13 (pour décembre 2004 +1)...


Message édité par dalcap le 27-07-2004 à 09:55:54
n°807446
Beegee
Posté le 27-07-2004 à 11:40:48  profilanswer
 

y a pas des fonctions Access qui permettent d'ajouter 1 mois à une date ??? plutôt que de faire une concaténation à la main ...

n°807473
willyboy73
Posté le 27-07-2004 à 12:01:37  profilanswer
 

alors... j'ai essayé ta solution mais je n'y suis pas arriver parce que je ne vois pas quelle syntaxe utiliser!
 
Alors je me suis fait un module avec une fonction qui quand je lui passe un mois en paramètre me renvoie la fin de ce mois! J'ai géré pour le cas ou on est en janvier (1-1=0) et pour les années bissextiles ( j'aurai pu faire mieux avec les multiples de 4 etc... mais bon) je mets la fonction si ça intéresse quelqu'un...  
 

Citation :


 
 
Public Function finmois(mois As Integer) As String
 
If mois = 0 Then
    mois = 12
End If
    Select Case (mois)
 
        Case 1, 3, 5, 7, 8, 10, 12
            finmois = "31/" & mois
        Case 2
            Select Case Year(Date)
            Case 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036
                finmois = "29/" & mois
            Case Else
                finmois = "28/" & mois
            End Select
        Case 4, 6, 9, 11
            finmois = "30/" & mois    
    End Select
 
End Function
 
exemple utilisation de la fct ->
Pour savoir le mois dernier :
 
Me.txt.Value = Format(MonModule.finmois(Month(Date) - 1) & "/" & Year(Date), "dd/mm/yyyy" )
 
renvoie " 30/06/2004 "


 
Je n'ai pas la prétention de dire que cette fonction est nikel je ne sais même pas si elle marche pour TOUS les cas mais si elle peut aider ou inspirer quelqu'un tant mieux!
 
Salut  :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Access]Problème date pour faire une recherche genre "mois dernier"

 

Sujets relatifs
Problème de variableproblème de compatibilité avec FireFox , IE6 et CSS ...
Petit problème de requête...probleme avec "osql" et les caracteres avec accent
Pb SQL SERVEUR / ACCESS : éxecuter une procedure stockée[Access] Installer les pilotes ODBC
Retourner le dernier element d'une table[POO] Probleme de recuperation de variable
Petit problème :(Probleme avec le refus de mise en cache !
Plus de sujets relatifs à : [Access]Problème date pour faire une recherche genre "mois dernier"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR