begin process at 2012 02 13 20:58:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBA

 > VBA ACCESS PROBLÈME DE DATE DANS UNE REQUETE SQL

VBA ACCESS PROBLÈME DE DATE DANS UNE REQUETE SQL


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VBA Niveau :Débutant Date de création :14/03/2003 Date de mise à jour :14/03/2003 15:54:25 Vu :20 733

Auteur : cidovul

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Qui n'a pas eu de problème de date sous VBA Access 2000 ou autre.
Quand vous faites une requete sous VBA avec des criteres dates jj/mm/yyyy,
vos dates sont interprétées en mm/jj/yyyy.
Grace a ce petit bout de code vous pouvez y remedier.

Source

  • Function MakeUSDate(dDate As Variant)
  • If Not IsDate(dDate) Then Exit Function
  • MakeUSDate = "#" & Month(dDate) & "/" & Day(dDate) & "/" & Year(dDate) & "#"
  • End Function
  • Private Sub test_click()
  • Dim Req As String
  • Dim Date_Deb As String
  • Dim Date_Fin As String
  • Req = "SELECT * FROM T_FACTURE"
  • Date_Deb = MakeUSDate(Me.Date_Deb)
  • Date_Fin = MakeUSDate(Me.Date_Fin)
  • Req = Req & " WHERE T_FACTURE.FACT_MODIF Between " & Date_Deb & " AND " & Date_Fin & ""
  • DoCmd.RunSQL Req
  • End Sub
Function MakeUSDate(dDate As Variant)
    If Not IsDate(dDate) Then Exit Function
    MakeUSDate = "#" & Month(dDate) & "/" & Day(dDate) & "/" & Year(dDate) & "#"
End Function

Private Sub test_click()

Dim Req As String
Dim Date_Deb As String
Dim Date_Fin As String


Req = "SELECT * FROM T_FACTURE"

Date_Deb = MakeUSDate(Me.Date_Deb)
Date_Fin = MakeUSDate(Me.Date_Fin)

Req = Req & " WHERE T_FACTURE.FACT_MODIF Between " & Date_Deb & " AND " & Date_Fin & ""

DoCmd.RunSQL Req

End Sub

 Conclusion

Pour tester ce code, faites un formulaire avec un bouton et 2 champs Date_Deb et Date_Fin.


 Sources de la même categorie

Source avec Zip GESTION PERSONNEL par oudlarbi
Source avec Zip Source avec une capture CALENDRIER EN VBA POUR EXCEL 2010 par nounou94
Source avec Zip Source avec une capture MANIPULER LES FENETRES ENFANT D'EXCEL par bigfish_le vrai
Source avec Zip Source avec une capture COLLECTION ID par Le Pivert
Source avec Zip Source avec une capture VBA MASQUE DE SAISIE NUMÉRIQUE par acive

Commentaires et avis

Commentaire de Warny le 14/03/2003 16:45:05

Plus simple

Const USFormat as String = "#mm/dd/yyyy#"

Date_Deb = Format (Me.Date_Deb, USFormat)
Date_Fin = Format (Me.Date_Fin, USFormat)

Ce qui permet bien sûr de modifier le format à volonté. Ca marche en vb aussi.

Commentaire de Warny le 14/03/2003 16:46:39

Oups il m'a grillé des antislashs à l'affichage juste avant les dièses

Commentaire de cidovul le 14/03/2003 17:21:41

ta facon de faire ne fonctionne pas, je l'ai testé
il me remet a chaque fois en mm/dd/yyyy

Commentaire de jack le 15/03/2003 03:21:46 administrateur CS

Encore plus simple (c'est dans la doc) :
Au lieu de se torturer à mettre au format US, ulitilser le format international :
... Between DateValue(" & Date_Deb & ") AND DateValue(" & Date_Fin & ")"
Attention : DateValue est interprété par Access, pas par VB : c'est donc normal de le voir DANS les guillemets.

Vala
Jack

Commentaire de jack le 15/03/2003 03:23:40 administrateur CS

ça marche très bien aussi avec les < et > :
... where Facture.Date < DateValue(" & Me.Date_Deb & ")"

Commentaire de CapDeBoro le 18/03/2003 10:41:47

Adiu

Dès que j?ai un moment, j?éssaye les solutions proposées
Cependant, lorsque j?ai rencontré ce problème, l?inversion de mm et jj ne se faisait que lorsque mm<jj
Exemple : 12/10/2001 =>12/10/2001
               10/12/2001 =>12/10/2001

Comme je cherchais simplement à importer des données contenues dans des fichiers texte, j?ai appliqué la solution suivante :
                  MaDateLng = CLng(MaDate)
Le champ Access recevant la donnée étant du genre Date, la traduction se fait correctement dans la table.

Cordialement
CapDeBoro

PS pour Nix
Il se passe des choses bizares avec l?identification des messages : Dans la source « TUTORIAL POUR ADODB, ADO », mon message est attribué à quelqu?un d?autre, et celui d?une troisième personne m?est attribué ?

Commentaire de gabj le 05/01/2005 13:12:52

Ouai moi je pense que vous vous prenez la tête pour pas grand chose. Pour formater une date au format US, il suffit de faire un : format(madate,"mm/dd/yyyy") à condition que ma date soit au format "dd/mm/yyyy".
En tout cas avec un DTPic , ça marche du tonerre.

Commentaire de Moumoud le 16/06/2006 03:33:02

Bonsoir tout le monde...
alors j'ai un probleme :
j'ai 2 controles de type DtPicker (date) + bouton de recherche + dataGrid + base de donnee...
lorsque je clique sur le bouton de recherche je veux que datagrid s'actualise automatiquement à condition que les enregistrements soient entre date debut et fin...
Si quelqu'un a la solution (requete SQL) ,il peut m'aider...
Merci d'avance

Mcool08@gmail.com

Commentaire de mytt01 le 28/11/2006 14:48:38

pas trop programmeur, je me suis bien contenté de la première proposition qui marche à merveille. Merci Cidovul
Miguel
extra débutant
xatt2001@yahoo.fr

Commentaire de erreurs404 le 16/01/2007 23:18:44

Il y a aussi BuildCriteria() qui fait tout ça automatiquement ...

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales