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 :

Pb DataGrib et Champs


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut Pb DataGrib et Champs
    Bonjour,

    J'ai un énorme soucis que je ne sais résoudre, je liste les champs d'une table que je veux ajouter dans mon DataGrid.
    Pour cela j'utilise la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.DataGrid.Rows.Add(maRow("NomChp1"), maRow("NomChp2"), maRow("NomChp3"), maRow("NomChp4"))
    Lorsque j'essaie avec le nom de mes champs en dur cela fonctionne sans problème mais voilà lorsque je liste tous mes noms de champs de ma table et que j'essaie avec la fonction ci-dessus d'ajouter les valeurs qui sont attribuées à chaque champs ça ne fonctionne pas.

    Je sais qu'en Windev il existe la fonction {"maRow("} + NomChp1 + {")"} ce qui fonctionne bien puisque cela reprend l'écriture de maRow("NomChp1") mais en VB.Net je colle.

    Bon je pense que j'ai embrouillé tout le monde donc je vais vous mettre le code que j'ai fait peut-être que cela sera plus compréhensible :

    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
    Dim maRow As DataRow
     
    For u = 0 To 30
        test = test & "maRow(" & Me.DataGrid.Columns(u).Name & "'),"
        System.Windows.Forms.Application.DoEvents()
    Next
     
    For Each maRow In DataSet.Tables(Me.CMB_TABLE.Text).Rows
     
         'Mon problème
         Me.DataGrid.Rows.Add(Microsoft.VisualBasic.Left(test, Microsoft.VisualBasic.Len(test) - 1))
     
         'Cela fonctionne puisque les champs ainsi que l'objet maRow est saisie en dur
         'Me.DataGrid.Rows.Add(maRow("ID"), maRow("ID_COULEE"), maRow("NATURE_PRODUIT"), maRow("DATE_COULEE"))
     
          System.Windows.Forms.Application.DoEvents()
    Next
    J'espère que vous pourrez m'aider dans ce problème qui malheureusement m'empêche d'aller plus loin.

    Merci d'avance à tous.

    Jb_One73

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je comprends rien à ta façon de faire... pourquoi tu mets pas simplement ta DataTable en DataSource du DataGridView ?

    Et au fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         'Mon problème
         Me.DataGrid.Rows.Add(Microsoft.VisualBasic.Left(test, Microsoft.VisualBasic.Len(test) - 1))
     
         'Cela fonctionne puisque les champs ainsi que l'objet maRow est saisie en dur
         'Me.DataGrid.Rows.Add(maRow("ID"), maRow("ID_COULEE"), maRow("NATURE_PRODUIT"), maRow("DATE_COULEE"))
    Cette ligne de code n'est pas du tout équivalente à la ligne en commentaire, c'est comme si tu faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.DataGrid.Rows.Add("maRow(ID'), maRow(ID_COULEE'), maRow(NATURE_PRODUIT'), maRow(DATE_COULEE')")
    Donc pour lui c'est juste une chaine de caractères, il n'a aucune raison d'interpréter ça comme une liste de valeurs...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Mince !!!

    Enfaite je viens de m'apercevoir que ce que j'ai dit c'était pas tout à fait mon problème (j'ai pas fait attention à ce que j'ai écrit).

    Lorsque j'ai marqué :
    J'ai un énorme soucis que je ne sais résoudre, je liste les champs d'une table que je veux ajouter dans mon DataGrid.
    Pour cela j'utilise la commande :
    Enfaite, pour l'ajout de mes entités dans les colonnes je n'ai aucun soucis en revanche c'est pour ajouter les valeurs à c'est différente colonne que je n'y arrive pas tout bêtement parce que la fonction du DataGrid qui permet cela oblige ce que les nom de colonne soit tous renseigné et c'est ça que je n'arrive pas faire "Renseigné dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.DataGrid.Rows.Add("maRow(ID'), maRow(ID_COULEE'), maRow(NATURE_PRODUIT'), maRow(DATE_COULEE')"
    le nom des colonnes"

    Je l'ai connait uniquement lorsque je fais la recherche des tables dans ma BDD.

    Pourquoi DataTable en DataSource du DataGridView ?
    C'est parce que c'est un pilote ADODC et que je ne sais pas comment faire donc j'utilise cette programmation après s'il y a une méthode je suis preneur.

    J'espère que cette fois ci j'ai été un peu plus compréhensible car expliquer ce que je fais c'est pour moi un peu compliqué.

    Merci pour ta réponse et merci pour ton aide.

    Jb_One73

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu n'as pas besoin de connaitre les noms des colonnes, il suffit d'ajouter une ligne en passant en paramètre un tableau d'objets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.DataGrid.Rows.Add(New Object() {uneValeur, uneAutreValeur...})

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Je viens de trouver la solution en revanche j'ai un méga soucis c'est que si j'ai dans ma table 15000 enregistrements je vais mettre environ 30mn pour tout afficher, là c'est vraiment un gros problème.

    Je te mets le code que j'ai fait pour alimenter ma DataGrid.

    Mon code :

    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
     'Chaîne de connexion à la BDD
            Dim SqlConn As String = "Driver=Firebird/InterBase(r) driver;Server=localhost;" + _
            "Database=localhost:CheminBDD;Uid=SYSDBA;Pwd=masterkey;"
     
            'Outil de connexion à BDD
            Dim myDA As New Odbc.OdbcConnection(SqlConn)
     
            'Ouverture de la BDD
            Try
                myDA.Open()
            Catch ex As Exception
                MsgBox("Erreur de connection à la BDD !" + _
                Chr(13) + Chr(13) + "Détails :" + Chr(13) + ex.Message(), MsgBoxStyle.Critical, "Fluox")
                Exit Sub
            End Try
     
            Dim ReqSQL = "SELECT * FROM " & Me.CMB_TABLE.Text
     
            'Table de données en mémoire
            Dim adapter As New Odbc.OdbcDataAdapter(ReqSQL, myDA)
     
            'Création de l'objet Dataset :
            Dim DataSet As New DataSet
     
            Try
                'Chargement des données dans la table adapter
                adapter.Fill(DataSet, Me.CMB_TABLE.Text)
     
                Me.DataGrid.DataSource = dt
     
            Catch ex As Exception
                MsgBox("Erreur de chargement des données !" + Chr(13) + Chr(13) + "Détails :" _
                + Chr(13) + ex.Message(), MsgBoxStyle.Critical, "Fluox")
                Exit Sub
            End Try
     
        End Sub

    Pourrais tu m'aider sur ce nouveau problème.

    Merci d'avance.

    Merci d'avance à tous.
    Jb_One73

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    c'est le adapter.Fill qui prend du temps je suppose ?
    dans ce cas il n'y a pas grand chose à y faire je pense...
    tout ce que tu pourrais faire éventuellement c'est afficher des résultats partiels en fonction de critères de recherche

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

Discussions similaires

  1. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38
  2. [VB6] [Datareport] définir un champ
    Par ckankonvahou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/10/2002, 11h16
  3. [ADO] Constantes des types de champ
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/09/2002, 11h08
  4. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 11h48
  5. taille max du nom d'un champ
    Par hna dans le forum Paradox
    Réponses: 2
    Dernier message: 28/07/2002, 02h40

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