Comparer deux dates [Résolu]

Signaler
Messages postés
3
Date d'inscription
samedi 3 octobre 2009
Statut
Membre
Dernière intervention
20 janvier 2010
-
faffomizou
Messages postés
3
Date d'inscription
samedi 3 octobre 2009
Statut
Membre
Dernière intervention
20 janvier 2010
-
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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
... 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
Messages postés
3
Date d'inscription
samedi 3 octobre 2009
Statut
Membre
Dernière intervention
20 janvier 2010

merci pour la réponse mais j'ai déja essayé ceci et le pblm persiste
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
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
Messages postés
3
Date d'inscription
samedi 3 octobre 2009
Statut
Membre
Dernière intervention
20 janvier 2010

merci