Comparer deux dates [Résolu]

Messages postés
3
Date d'inscription
samedi 3 octobre 2009
Dernière intervention
20 janvier 2010
- - Dernière réponse : faffomizou
Messages postés
3
Date d'inscription
samedi 3 octobre 2009
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
... 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
Commenter la réponse de Renfield
Messages postés
3
Date d'inscription
samedi 3 octobre 2009
Dernière intervention
20 janvier 2010
0
Merci
merci pour la réponse mais j'ai déja essayé ceci et le pblm persiste
Commenter la réponse de faffomizou
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
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
Commenter la réponse de Renfield
Messages postés
3
Date d'inscription
samedi 3 octobre 2009
Dernière intervention
20 janvier 2010
0
Merci
merci
Commenter la réponse de faffomizou

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.