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
71
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
71
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
71
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