Comparer deux dates

Résolu
faffomizou Messages postés 3 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 20 janvier 2010 - 20 janv. 2010 à 10:50
faffomizou Messages postés 3 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 20 janvier 2010 - 20 janv. 2010 à 14:01
bonjour tt le monde
q un ptit pblm
je suis entrain de developper une petilte application de gestion d'inventaire
je dois faire du statistiques
je veux comparer la date que j'ai entré dans le DateTimePicker avec les dates qui existent dans la table "Matériel" de la base de donnée "inventaire" pour afficher le nombre des entrées aprés la date que g précisé mais g pas pu l'exécuter le Debug me signale "Type de données incompatible dans l'expression du critère."
voila le code

Dim nombre As Integer
Dim MyConnexion2 As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Application.StartupPath + "\Inventaire.mdb")
Dim Mycommand2 As OleDbCommand = MyConnexion2.CreateCommand()
Mycommand2.CommandText = "SELECT Count(*) As nombre FROM Matériel WHERE Date_achat>='" + DateTimePicker1.Value.Date + "'"
MyConnexion2.Open()
Dim myReader2 As OleDbDataReader = Mycommand2.ExecuteReader()
'se bloque ici dans Mycommand2.ExecuteReader()
Do While myReader2.Read
txt_Date.Text = myReader2.GetValue(nombre)
Loop
myReader2.Close()
MyConnexion2.Close()

merci d'avance

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 janv. 2010 à 12:54
Allez, je te montre ce qu'il t'es possible de faire :

        Dim oConn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=""C:\a.mdb""")
        Dim oCmd As OleDbCommand = oConn.CreateCommand()
        oCmd.CommandText = "SELECT COUNT(0) FROM `Matériel` WHERE `Date_achat`>=#" & DateTimePicker1.Value.ToString("yyyy-MM-dd") & "# "
        oConn.Open()
        With oCmd.ExecuteReader()
            .Read()
            TextBox1.Text = .GetValue(0).ToString()
            .Close()
        End With
        oConn.Close()


il même conseillé d'utiliser une requète parametrée :
         Dim oConn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=""C:\a.mdb""")
        Dim oCmd As OleDbCommand = oConn.CreateCommand()
        oCmd.CommandText = "SELECT COUNT(0) FROM `Matériel` WHERE `Date_achat`>=p1 "
        oCmd.Parameters.Add("p1", OleDbType.DBDate).Value = DateTimePicker1.Value
        oConn.Open()
        With oCmd.ExecuteReader()
            .Read()
            TextBox1.Text = .GetValue(0).ToString()
            .Close()
        End With
        oConn.Close()




testé, ça fonctionne nickel chez moi...


Renfield - Admin CodeS-SourceS - MVP Visual Basic
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 janv. 2010 à 11:20
... WHERE Date_achat>=#" & Format$(DateTimePicker1.Value.Date, "YYYY-MM-DD & "# "

question posée de très (trop) nombreuses fois

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
faffomizou Messages postés 3 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 20 janvier 2010
20 janv. 2010 à 11:40
merci pour la réponse mais j'ai déja essayé ceci et le pblm persiste
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 janv. 2010 à 12:45
c'est une première étape, disons, le reste de ton code est bancal.

je pense nottament à 'nombre' qui démontre une incompréhension.

il y a aussi le fait que tu fasse une boucle de lecture, alros que ta requete ne ramene qu'un tuple d'un seul champ...

il y a également ce DateTimePicker1.Value.Date
qui est assez étrange...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
faffomizou Messages postés 3 Date d'inscription samedi 3 octobre 2009 Statut Membre Dernière intervention 20 janvier 2010
20 janv. 2010 à 14:01
merci
0
Rejoignez-nous