Filtrer datagridview par date

cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010 - 7 nov. 2009 à 22:18
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010 - 14 nov. 2009 à 20:42
Bonjour
J ai une datagridview qui contient plusieurs champs, je veux filtrer mes données par une date saisie par l utilisateur "datetimepicker" puis clicker sur le bouton rechercher, le code c 'est le suivant (contient l erreur):

 Public Function Find_Con_Date(ByVal Date_jour As String) As DataTable
        Dim Cmd As New OleDbCommand
        Dim Datab As New DataTable
        Try
 
            Cmd.CommandText = "select * from Connection where Date_jour= con_rech_date.value =" & Date_jour
            Datab = Con.Select_DataTable(Cmd)
        Catch ex As Exception
            MsgBox(ex.Message & " Find_Con_Date()")
        End Try
        Return Datab
 
 
    End Function



et comment dois je appeler cette fonction?
merci de me soutenir car c ma 1ere application

24 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
8 nov. 2009 à 22:26
Salut,

Le problème vient de ta requête SQL mal formulé :

d.CommandText = "select * from Connection where Date_jour='" & Date_jour & "'"



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
9 nov. 2009 à 03:21
oui merci, et j ai un datetimepicker(con_rech_date.value) qui donne la date pour le filtre ou je dois le placer dans tout ca?
et comment appeler cette fonction?
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
9 nov. 2009 à 10:01
Cmd.CommandText = "select * from Connection where Date_jour= con_rech_date.value =" & Date_jour

C'est ta requête qui est mal formulé, tu inclus con_rech_date.value dans une chaîne de texte, ta requête SQL n'a rien à voir avec tes composant vb.

Cmd.CommandText = "SELECT * FROM Connection WHERE Date_jour=" & con_rech_date.value



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
9 nov. 2009 à 20:33
oui mais quand je mets ce code il me souligne 'con_rech_date.value' car elle n est pas declarée alors a mon avis je dois mettre le code suivant:
Public Function Find_Con_Date(ByVal on_rech_date.value As String) As DataTable


n est ca pas?

et comment j appel cette fonction?

merci pour votre interet
0

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

Posez votre question
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
9 nov. 2009 à 20:49
Ah! En même temps c'était pas très claire, bon voila :


Public Function Find_Con_Date(ByVal Date_jour As String) As DataTable
        Dim Cmd As New OleDbCommand
        Dim Datab As New DataTable
        Try
             Cmd.CommandText "select * from Connection where Date_jour" & Date_jour.ToString


A partir de la ca se corse un peu... Qu'est ce que Con ???

        Datab = Con.Select_DataTable(Cmd)
            
        Catch ex As Exception
            MsgBox(ex.Message & " Find_Con_Date()")
        End Try
        Return Datab
  
    End Function


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
10 nov. 2009 à 01:03
Je vous remercie infiniment, c est la reponce que j attendais
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
10 nov. 2009 à 03:00
et le bouton rechercher je mets ce code la?


Private Sub con_b_rech_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles con_b_rech.Click
      
        Dim i As Int16
        Dim Date_jour As String
        Dim dt As New DataTable
        i = dacces.Find_Con_Date(Date_jour as string)as System.Data.DataTable
        If i > 0 Then
            MsgBox("OK")
            Me.ConnectionDataGridView.DataSource = dacces.Find_Con_Date(Me.con_rech_date.Value)

        End If

    End Sub

/URL/img
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
11 nov. 2009 à 19:05
j attens toujours les amis
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 nov. 2009 à 19:53
et le bouton rechercher je mets ce code la?


T'es pas obligé d'attendre tu peux essayer des choses toi même et revenir poster si cela ne fonctionne pas...

En précisant les messages d'erreur que tu rencontre bien entendu.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
11 nov. 2009 à 20:38
j j'essaye toujours mon ami, et j ai besoin d aide ca se vois clairement
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 nov. 2009 à 20:55
Je veux bien mais quel est ton problème ? Si tu ne me le dis pas clairement je ne peux pas le deviner !


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
11 nov. 2009 à 21:12
j ai le code pour filtrer mes donnée de datagrid par une date entree dans un datetimepicker par l utilisateur et je click sur RECHERCHER pour m affichier le resultat, j ai le code c est celui qui est en haut mais je veux le code que j entre dans le bouton rechercher c tt
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 nov. 2009 à 22:24
T'avais bien un code plus haut ? T'as esssayé ? Ca marche ? Si ca ne marche pas, t'as bien un message d'erreur ? Lequel ?

Je le répete nous ne sommes pas devins, il faut préciser les question, nous on a pas ta source devant les yeux.

de plu, ici on est la pour aider les gens, pas pour fournir du code ou coder à la place des gens, c'est a dire qu'en gros, je t'aide pour que tu soit capable de le faire toi même et non pour te filer un morceau de code que tu ne comprend pas à coller bêtement dans un programme que tu ne comprend pas...

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
11 nov. 2009 à 22:53
ok alors je mets ce code dans le bouton rechercher:

 Dim i As Int16
        Dim Date_jour As String
        Dim dt As New DataTable
        i = dacces.Find_Con_Date(Date_jour)
        If i > 0 Then
            MsgBox("OK")
            Me.ConnectionDataGridView.DataSource = dacces.Find_Con_Date(Me.con_rech_date.Value)

        End If


il me souligne:
dacces.Find_Con_Date(Date_jour)


et le message d erreur c est (une valeur de type 'System.Data.DataTable' ne peut pas etre convertie en short)
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 nov. 2009 à 23:02
Ben voila

        Dim i As Int16 ' Tu déclare ici une valeur de type short (Integer 16)
        Dim Date_jour As String' Tu déclare la une variable qui ne sert à rien...
        Dim dt As New DataTable' Et ici une datatable  
        i = dacces.Find_Con_Date(Date_jour)' Le problème est bien la 
        'Find_Con_Date retourne un DataTable et non un Short.

        Le mieu c'est de ne garder que :

        Me.ConnectionDataGridView.DataSource = dacces.Find_Con_Date(Me.con_rech_date.Value)




Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
11 nov. 2009 à 23:18
aaaaaah Ok alors c la le probleme merci bcp
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
13 nov. 2009 à 16:59
mais ma datagride n affiche aucune ligne meme si je selectionne une date qui existe deja
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 nov. 2009 à 18:00
je ne peux pas t'aider... Je ne peux pas deviner ton code...


Datab = Con.Select_DataTable(Cmd) <= Question déja posé, qu'est ce qie Con ? Ta connexion je suppose, comment est elle instancié ? Etc, etc...


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_snakeon Messages postés 59 Date d'inscription mardi 29 janvier 2008 Statut Membre Dernière intervention 5 mars 2010
13 nov. 2009 à 18:28
on revient au meme point
je crois pas que j ai un probleme de connection, mes requetes d ajout et modification et suppression s executent a merveille, j ai juste le probleme dans cella de filtrage
voila ma connection:
Public Class Connection

    Dim MaConnection As OleDbConnection = New OleDbConnection
    Dim Adapter As OleDbDataAdapter = New OleDbDataAdapter

    Dim ChaineConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=|DataDirectory|\CyberDB.mdb" & ";" & _
      "Persist Security Info=False"

    Public Function Select_DataTable(ByVal Cmd As OleDbCommand) As DataTable
        Dim dt As New DataTable
        Try
            MaConnection.Close()
            MaConnection.ConnectionString = ChaineConnection
            MaConnection.Open()
            If MaConnection.State = ConnectionState.Open Then
                Cmd.Connection = MaConnection
                Adapter.SelectCommand = Cmd
                ' dt = New DataTable
                Adapter.Fill(dt)
            Else
                MsgBox("Connexion failed...")
            End If
        Catch ex As Exception
            MsgBox(ex.Message & " Select_DataTable")
        End Try
        Return dt
    End Function

    Public Function Mise_A_Jour(ByVal Cmd As OleDbCommand) As Integer

        Dim i As Integer
        MaConnection.Close()
        MaConnection.ConnectionString = ChaineConnection
        MaConnection.Open()
        Cmd.Connection = MaConnection
        i = Cmd.ExecuteNonQuery()
        Return i
    End Function

End Class

voila ce que j ai mit dans mon bouton rechercher:
Me.ConnectionDataGridView.DataSource = dacces.Find_Con_Date(Me.con_rech_date.Value.Date.Date)

le .date.date c juste pour me filtrer que la date et pas l heure et la date
dac?
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
13 nov. 2009 à 19:50
Effectivement tu as raison, il n'y a pas d'erreur de connexion, mias cela m'aide à comprendre comment tu procède, au niveau de la requête de la date essaye cela plutot :

Cmd.CommandText = "select * from Connection where Date_jour= con_rech_date.value = '#" & Date_jour & "#'

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Rejoignez-nous