Recherche entre 2 dates dans mdb [Résolu]

boudiou1 5 Messages postés mardi 20 juillet 2004Date d'inscription 27 avril 2009 Dernière intervention - 24 avril 2009 à 15:17 - Dernière réponse : boudiou1 5 Messages postés mardi 20 juillet 2004Date d'inscription 27 avril 2009 Dernière intervention
- 27 avril 2009 à 11:42
Bonjour tout le monde. Je deviens fou. Je tente de recuperer des données entre 2 dates via un MonthCalendar et j''en perd mon latin :( Pour etre précis, je cherche dans un champ de  table access au format Date avec la requete suivante :

Private
Sub Button8_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button8.Click

Dim startdate
As
String

Dim enddate
AsStringstartdate Me.MonthCalendar1.SelectionRange.Startenddate

Me.MonthCalendar2.SelectionRange.StartMsgBox(startdate)

MsgBox(enddate)

Connexion =

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Matable.mdb"ConnexionOLE.ConnectionString = Connexion

da =

New OleDbDataAdapter(
"Select * from courrier where [date] = ('" & startdate &
"')", ConnexionOLE)ds =

New DataSet()da.Fill(ds,

"mytable")dv = ds.Tables(

"mytable").DefaultViewDataGridView1.DataSource = dv

dv.AllowEdit =

True

End
Sub

Je me retrouve avec le message d'erreur suivant : Type de donnée incompatible dans l'expression du critere
Aux vues des données du débogeur, il semble que ce soit un probleme de format de date. En efftet ma variable startdate prend bien la valeur saisie(par exemple 05/01/2009), par contre Me.MonthCalendar1.SelectionRange.Start
prend la valeur #1/5/2009#. Ce qui est bizarre c'est que ma requete select semble envoyer le bon format (soit 05/01/2009, verifié par le msgbox). J'ai essayé de déclarer mes variables en Date au lieu de String et j'ai le meme soucis. J'avoue que je cale. Heeeeeeeeeeeeeeelp
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscriptionModérateurStatut 18 janvier 2017 Dernière intervention - 27 avril 2009 à 11:23
3
Merci
je te l'ai dit plus haut...


pour selectionne le 5 janvier.
ça, ça fonctionne (je ne t'apprend rien) :
Select * from courrier where [date] = #1/5/2009#

en recréant la chose avec ta date Stardate, tu tentes, bizarrement
Select * from courrier where [date] = 05/01/2009
Select * from courrier where [date] = (05/01/2009)
Select * from courrier where [date] = ('05/01/2009')

en effet, tu ne précise pas de formatage, ca utilise donc tes parametres regionnaux.

pourquoi ne pas utiliser, comme il se doit des dièses # pour délimiter ta date ?
pourquoi ne pas formater ta date comme il se doit: MM/DD/YYYY (ou yyyy-MM-dd, souvent plus lisible)

allez, je te mache encore un peu plus la chose...

"SELECT * FROM `courrier` WHERE `date`=#" & StartDate.ToString("yyyy-MM-dd") & "#"

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscriptionModérateurStatut 18 janvier 2017 Dernière intervention - 24 avril 2009 à 15:23
0
Merci
encore et toujours les memes questions sur les Dates et le SQL...

ce genre de question qui tombe deux à trois fois par semaine...

SQL n'en a rien a carer des regional settings
une date, pour lui, c'est MM/DD/YYYY
et ca s'encadre avec des #

point barre.


donc, on fait pas :

"Select * from courrier where [date] = ('05/01/2009')"
mais bien
"Select * from courrier where [date] = #1/5/2009#"

allez, un peu de lecture
http://blogs.codes-sources.com/renfield/archive/2009/04/14/param-tres-r-gionnaux-en-g-n-ral-et-avec-vb6.aspx
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscriptionModérateurStatut 18 janvier 2017 Dernière intervention - 24 avril 2009 à 15:24
0
Merci
idem pour le coté 'entre deux date' :

"SELECT * FROM `courrier` WHERE `date` BETWEEN #1/5/2009# AND #4/24/2009#"
Commenter la réponse de Renfield
boudiou1 5 Messages postés mardi 20 juillet 2004Date d'inscription 27 avril 2009 Dernière intervention - 24 avril 2009 à 16:00
0
Merci
Réponse rapide :) j'ai deja testé en passant ces variables de la facon dont tu cites mais j'ai toujours le meme message d'erreur :(
Commenter la réponse de boudiou1
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscriptionModérateurStatut 18 janvier 2017 Dernière intervention - 24 avril 2009 à 16:08
0
Merci
tu as bien formatté tes dates avant de transmettre l'info ?

tu as vérifié la requete obtenue ?
conforme a ce que je t'indique ?

tu as testé en mettant temporairement la requete en dur ?
Commenter la réponse de Renfield
boudiou1 5 Messages postés mardi 20 juillet 2004Date d'inscription 27 avril 2009 Dernière intervention - 24 avril 2009 à 21:40
0
Merci
Helas oui, c'est pourquoi je ne comprend pas pourquoi cela ne fonctionne pas :(
Commenter la réponse de boudiou1
boudiou1 5 Messages postés mardi 20 juillet 2004Date d'inscription 27 avril 2009 Dernière intervention - 27 avril 2009 à 11:06
0
Merci
bon, alors j'ai testé en saisissant en dur une date dans ma requete, a savoir par exemple




Select * from courrier where [date] = #1/5/2009#

Là tout fonctionne nickel. Le blem vient de la facon dont est transmise ma variable
Voici le code modifié et qui fonctionne avec la variable en dur :
Dim startdate
As
Date
startdate =
Me.MonthCalendar1.SelectionRange.Start     (m'indique bien par exemple #1/5/2009# pour une date saisie le 5 janvier 2009 dans mon monthcalendar)
Connexion =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Courrier.mdb"
ConnexionOLE.ConnectionString = Connexion

Le probleme est dans mon select. mais ou ???
J'ai essayé ces d iverses requetes sans succes, c'est à dire sans message d'erreur mais sans aucun enregistrement trouvé

da =
New OleDbDataAdapter(
"Select * from courrier where [date] = " & startdate &
"", ConnexionOLE)
ou encore
da =
New OleDbDataAdapter(
"Select * from courrier where [date] = (" & startdate &
")", ConnexionOLE)
et
da = New
OleDbDataAdapter(
"Select * from courrier where [date] = ('" & startdate &
"')", ConnexionOLE)




Je pense que je commets une erreur de syntaxe mais laquelle ??????
Commenter la réponse de boudiou1
boudiou1 5 Messages postés mardi 20 juillet 2004Date d'inscription 27 avril 2009 Dernière intervention - 27 avril 2009 à 11:42
0
Merci
Tu as raison, je suis une bille !!!!! j'avais testé ce type de requete la semaine dernière mais en omettant les # !!!!
tout est OK maintenant.
Un grand merci à toi ;)
Commenter la réponse de boudiou1

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.