IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème avec deux datagridview sur deux forms différentes


Sujet :

VB.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    Par défaut Problème avec deux datagridview sur deux forms différentes
    Bonsoir,

    J'ai deux forms avec un datagridview sur chacune des forms et je viens de remarqué que si j'allimente un datagridview l'autre se vide et vise versa !!!!

    Je ne vois pas ou est l'erreur j'utilise deux dataset de noms différents.

    Premier datagridview

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
      Private Sub cb_nom_client_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cb_nom_client.TextChanged, cb_nom_client.Click
            Dim str_rech As String = cb_nom_client.Text
            Dim dta As MySqlDataAdapter
            Dim dts_client_rdv As DataSet
     
            dtgv_nom_client_rdv.Visible = False
            lbl_nouv_client.Visible = False
     
            dtgv_nom_client_rdv.DataSource = Nothing
            str_table_rdv = "client_rdv"
     
            If str_rech <> vbNullString Then '//Si la recherche n est pas vide
                str_requete = "SELECT ID_CLIENT,NOM_CLIENT AS NOM,PRENOM_CLIENT AS PRENOM,ADRESSE FROM vue_renseignement_client WHERE NOM_CLIENT LIKE " & "'" & str_rech & "%'"
     
                dta = New MySqlDataAdapter(str_requete, conn)
     
                '//Dataset cache en memoire de donnée
                dts_client_rdv = db.FONC_REQ_DTS_MYSQL(str_requete)
     
                dta.Fill(dts_client_rdv, str_table_rdv)
                dt = dts_client_rdv.Tables(str_table_rdv) '//DataTable
                conn.Close()
                '//Cache la colonne de l'id du client(pour l'ajout tbl_coiffeur_tranche)
                dts_client_rdv.Tables(str_table_rdv).Columns("ID_CLIENT").ColumnMapping = MappingType.Hidden
     
                If BindingContext(dts_client_rdv, str_table_rdv).Count > 0 Then
                    dtgv_nom_client_rdv.Visible = True
                    lbl_nouv_client.Visible = False
     
                Else
                    dtgv_nom_client_rdv.Visible = False
                    lbl_nouv_client.Visible = True
                End If
     
                conn.Close() '// On ferme la connexion le plus tôt possible
     
                dtgv_nom_client_rdv.DataSource = dts_client_rdv
                dtgv_nom_client_rdv.DataMember = str_table_rdv
     
            End If
     
        End Sub
    Deuxième datagridview
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     Private Sub cb_nom_client_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cb_nom_client.TextChanged, cb_nom_client.Click
            Dim str_rech As String = cb_nom_client.Text
            Dim dta As MySqlDataAdapter
     
            dtgv_nom_client_rdv.Visible = False
            lbl_nouv_client.Visible = False
     
            dtgv_nom_client_rdv.DataSource = Nothing
            str_table_rdv = "client_rdv"
     
            If str_rech <> vbNullString Then '//Si la recherche n est pas vide
                str_requete = "SELECT ID_CLIENT,NOM_CLIENT AS NOM,PRENOM_CLIENT AS PRENOM,ADRESSE FROM vue_renseignement_client WHERE NOM_CLIENT LIKE " & "'" & str_rech & "%'"
     
                dta = New MySqlDataAdapter(str_requete, conn)
                dts.Clear()
                '//Dataset cache en memoire de donnée
                dts = db.FONC_REQ_DTS_MYSQL(str_requete)
     
                dta.Fill(dts, str_table_rdv)
                dt = dts.Tables(str_table_rdv) '//DataTable
                conn.Close()
                '//Cache la colonne de l'id du client(pour l'ajout tbl_coiffeur_tranche)
                dts.Tables(str_table_rdv).Columns("ID_CLIENT").ColumnMapping = MappingType.Hidden
     
                If BindingContext(dts, str_table_rdv).Count > 0 Then
                    dtgv_nom_client_rdv.Visible = True
                    lbl_nouv_client.Visible = False
     
                Else
                    dtgv_nom_client_rdv.Visible = False
                    lbl_nouv_client.Visible = True
                End If
     
                conn.Close() '// On ferme la connexion le plus tôt possible
     
                dtgv_nom_client_rdv.DataSource = dts
                dtgv_nom_client_rdv.DataMember = str_table_rdv
     
            End If
     
        End Sub
    Merci d'avance.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    essaye avec 2 connexions différentes

    et puis ca manque de try catch et de using ...

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    Par défaut
    J'ai utilisé deux connexions différentes et toujours le même.

    Je ne mets pas la gestions d'erreur pour le moment car je n'ai pas fini.

    Merci de ton aide.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    dans ton code tu utilises la variable conn dans les 2 cas

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    Par défaut
    Voila j ai essayé avec une autre variable pour la connexion, rien n'y change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
        Private Sub PROC_REMPLIR_DBGRID_HISTORIQUE()
            Dim dta_hist As MySqlDataAdapter
            Dim dts_historique As DataSet
     
            lbl_aucun_result.Visible = False '//Initialise
     
            str_requete = "SELECT ID_CLIENT,JOUR_OUVRABLE AS DATE,HEURE_DEBUT AS HEURE,DESCRIPTION AS PRESTATION FROM `vue_historique_coupe` WHERE ID_CLIENT=" & int_id_rech_client
     
            '//La méthode Fill de l'objet dta permet de remplir le Dataset
            '//le dataset s'appelle "clients" ou "coiffeur" qui est le nom de l'espace mémoire
            '//le DataSet peut travailler en mode déconnecté
            dta_hist = New MySqlDataAdapter(str_requete, conn)
     
            ''//Dataset cache en memoire de donnée
            dts_historique = db.FONC_REQ_DTS_MYSQL(str_requete)
     
            dta_hist.Fill(dts_historique, "vue_historique")
            conn.Close()
            '//Cacher la colonne obligé d'avoir un champ primary key dans le dataset pour les modif via le dtgb_rechr
            dts_historique.Tables("vue_historique").Columns("ID_CLIENT").ColumnMapping = MappingType.Hidden
     
            dtgv_histo.Columns.Clear() '//On efface les noms des collones
            dtgv_histo.DataSource = Nothing '//On libère le datagridview
     
            If (BindingContext(dts_historique, "vue_historique").Count = 0) Then
                dtgv_histo.Columns.Clear() '//On efface les noms des collones
                dtgv_histo.DataSource = Nothing '//On libère le datagridview
                lbl_aucun_result.Visible = True
            Else
                dtgv_histo.DataSource = dts_historique '//On remplis le datagrid via une liaison de donnée 
                dtgv_histo.DataMember = "vue_historique" '//Spécifie une des tables vers laquelle effectuer la liaison
            End If
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Private Sub cb_nom_client_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cb_nom_client.TextChanged, cb_nom_client.Click
            Dim str_rech As String = cb_nom_client.Text
            Dim dta As MySqlDataAdapter
            Dim dts_client_rdv As DataSet
     
            dtgv_nom_client_rdv.Visible = False
            lbl_nouv_client.Visible = False
     
            dtgv_nom_client_rdv.DataSource = Nothing
            str_table_rdv = "client_rdv"
     
            If str_rech <> vbNullString Then '//Si la recherche n est pas vide
                str_requete = "SELECT ID_CLIENT,NOM_CLIENT AS NOM,PRENOM_CLIENT AS PRENOM,ADRESSE FROM vue_renseignement_client WHERE NOM_CLIENT LIKE " & "'" & str_rech & "%'"
     
                dta = New MySqlDataAdapter(str_requete, conn1)
     
                '//Dataset cache en memoire de donnée
                dts_client_rdv = db.FONC_REQ_DTS_MYSQL(str_requete)
     
                dta.Fill(dts_client_rdv, str_table_rdv)
                dt = dts_client_rdv.Tables(str_table_rdv) '//DataTable
                conn.Close()
                '//Cache la colonne de l'id du client(pour l'ajout tbl_coiffeur_tranche)
                dts_client_rdv.Tables(str_table_rdv).Columns("ID_CLIENT").ColumnMapping = MappingType.Hidden
     
                If BindingContext(dts_client_rdv, str_table_rdv).Count > 0 Then
                    dtgv_nom_client_rdv.Visible = True
                    lbl_nouv_client.Visible = False
     
                Else
                    dtgv_nom_client_rdv.Visible = False
                    lbl_nouv_client.Visible = True
                End If
     
                conn.Close() '// On ferme la connexion le plus tôt possible
     
                dtgv_nom_client_rdv.DataSource = dts_client_rdv
                dtgv_nom_client_rdv.DataMember = str_table_rdv
     
            End If
     
        End Sub
    Pour la connexion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Public connString As String = ConfigurationManager.ConnectionStrings("Chaine_con").ConnectionString
        Public conn As New MySqlConnection(connString)
        Public conn1 As New MySqlConnection(connString)
    Pour la fonction pour la requete dataset dans une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     Function FONC_REQ_DTS_MYSQL(ByVal query As String)
            dts.Clear()
            Try
                str_requete = query
                If conn.State = 0 Then conn.Open()
                '//On execute la requete
                dta = New MySqlDataAdapter(str_requete, conn)
                dta.Fill(dts)
                Return dts
                '//On renvoie la table
            Catch myerror As MySqlException
                MsgBox("Erreur dans la FONC_REQ_MYSQL: " & myerror.Message)
                Return 0
            End Try
     
        End Function
    Merci

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    ta fonction n'est pas typée, et elle agit sur un unique dataset

  7. #7
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Le code au début était bien... Mais le problème dans tes fonctions, c'est que tu faisais:

    Alors forcement, ça efface tes datatables.

    D'ailleurs ton dataset, est déclaré en variable local, il devrait plutôt être déclaré en Public, pour que tu puisses y accéder de plusieurs Form.

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    661
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 661
    Points : 244
    Points
    244
    Par défaut
    C'etait bien le dts.clear je l'avais pas vu

    Merci a vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2013, 16h49
  2. Problème avec un projet sur deux machines différentes
    Par dz_robotix dans le forum Visual C++
    Réponses: 3
    Dernier message: 20/02/2012, 18h00
  3. Réponses: 4
    Dernier message: 24/09/2010, 17h28
  4. Réponses: 3
    Dernier message: 14/01/2007, 19h52
  5. Sum de deux champs sur deux tables différentes
    Par kluh dans le forum Oracle
    Réponses: 11
    Dernier message: 29/09/2005, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo