Vba access problème de date dans une requete sql

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 319 fois - Téléchargée 38 fois

Contenu du snippet

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 / Exemple :


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.

A voir également

Ajouter un commentaire

Commentaires

cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015
-
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.
cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015
-
Oups il m'a grillé des antislashs à l'affichage juste avant les dièses
cs_cidovul
Messages postés
1
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
14 mars 2003
-
ta facon de faire ne fonctionne pas, je l'ai testé
il me remet a chaque fois en mm/dd/yyyy
cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61 -
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
cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61 -
ça marche très bien aussi avec les < et > :
... where Facture.Date < DateValue(" & Me.Date_Deb & ")"

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.