boudiou1
Messages postés5Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention27 avril 2009
-
24 avril 2009 à 15:17
boudiou1
Messages postés5Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention27 avril 2009
-
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
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
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202175 27 avril 2009 à 11:23
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") & "#"
boudiou1
Messages postés5Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention27 avril 2009 27 avril 2009 à 11:06
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 ??????
boudiou1
Messages postés5Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention27 avril 2009 27 avril 2009 à 11:42
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 ;)