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 :

Remplir une DataTable


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Remplir une DataTable
    Bonjour,

    J'ai besoin de remplir une DataTable afin de l'afficher avec un DataGridView par la suite.

    J'ai stocké dans une variable une string de 670 caractères que je dois découper en groupe de 10 afin de les afficher dans le tableau, en le remplissant ligne par ligne.

    Je cherche donc à remplir le tableau case par case en parcourant le nombre de colonne et dès qu'on arrive à 10 (le nb de colonnes), on passe à la ligne suivante, en continuant de remplir le compléter à partir de la string qui est découpée.

    Le meilleur moyen est-il de faire une liste de string qui contient donc 67 string de 10 caractères (la string de départ qui est découpée), de créer le nombre de lignes à partir de la liste et d'essayer de remplir le tableau à partir de ça?


    Nom : Capture.PNG
Affichages : 235
Taille : 5,9 Ko

    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
     Dim table As New DataTable()
            table.Columns.Add("10", Type.GetType("System.String"))
            table.Columns.Add("20", Type.GetType("System.String"))
            table.Columns.Add("30", Type.GetType("System.String"))
            table.Columns.Add("40", Type.GetType("System.String"))
            table.Columns.Add("50", Type.GetType("System.String"))
            table.Columns.Add("60", Type.GetType("System.String"))
            table.Columns.Add("70", Type.GetType("System.String"))
            table.Columns.Add("80", Type.GetType("System.String"))
            table.Columns.Add("90", Type.GetType("System.String"))
            table.Columns.Add("100", Type.GetType("System.String"))
     
     
      Dim testStr As New List(Of String)
            testStr.Add("test1")
            testStr.Add("test2")
            testStr.Add("test3")
            testStr.Add("test4")
            testStr.Add("test5")
            testStr.Add("test6")
            testStr.Add("test7")
            testStr.Add("test8")
            testStr.Add("test9")
            testStr.Add("test10")
            testStr.Add("test11")
            testStr.Add("test12")
     
     
     For k = 0 To table.Columns.Count - 1
                Dim putNewRow As DataRow = table.NewRow
                putNewRow(k) = testStr(k).ToString
                table.Rows.Add(putNewRow)
     
     
            Next
    Pour l'instant j'ai testé avec le code-ci dessus, juste pour essayer de remplir le tableau comme souhaité mais je n'y parviens pas.
    Le but serait que de "test1" jusqu'à "test10", on insère sur la première ligne, de "test11" à "test20" sur la suivante, etc...


    Je cherche à faire quelque chose qui ressemble à l'image ci-dessous :

    Nom : Capture2.PNG
Affichages : 219
Taille : 53,8 Ko

    Merci d'avance pour l'aide

  2. #2
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 484
    Points : 2 265
    Points
    2 265
    Par défaut
    bonjour,
    perso je verrais un truc comme ça!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Dim putNewRow As DataRow = table.NewRow
            For k = 0 To table.Columns.Count - 1
                putNewRow(k) = testStr(k).ToString
            Next
            table.Rows.Add(putNewRow)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour, effectivement ça se met bien au bon endroit !
    Mais le problème c'est pour passer à la ligne suivante, le code que j'ai montré était juste un exemple.
    Si je veux le faire pour une string de 600 caractères, comment je fais pour faire en sorte de revenir à la ligne à chaque fois ? Car une fois l'index du nombre de colonnes dépassé je ne peux plus parcourir la chaine en question

    Je cherche à faire un tableau qui ressemble exactement à ça :

    Nom : Capture2.PNG
Affichages : 217
Taille : 53,8 Ko


    En sachant que les caractères qui sont insérés dans le tableau se trouvent dans une variable String.

  4. #4
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 484
    Points : 2 265
    Points
    2 265
    Par défaut
    ça Dim testStr As New List(Of String) tu oublis tu travail directement avec ta variable {TXT} une string de 670 caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     For i As Int64 = 0 To TXT.LongCount  Step 100
                Dim putNewRow As DataRow = table.NewRow
                For k = 0 To table.Columns.Count - 1
                    If i + (k * 10) + 10 > TXT.LongCount Then Exit For
                    putNewRow(k) = TXT.Substring(i + (k * 10), 10)
                Next
                table.Rows.Add(putNewRow)
            Next

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Nom : Capture4.PNG
Affichages : 208
Taille : 42,3 Ko


    Ca à l'air de fonctionner merci ! Il manque juste la dernière case qui ne se remplie pas.
    (La textbox à gauche c'est le résultat que j'essaie d'obtenir)
    Images attachées Images attachées  

  6. #6
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 484
    Points : 2 265
    Points
    2 265
    Par défaut
    tu excuseras mon tâtonnement mais il mais j'ai déclaré un string(670)="X" c'est moins facile pour faire la part des chose!

    je pense avoir fait une erreur là!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i As Int64 = 1 To TXT.LongCount Step 100

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Pas de problème ^^ j'ai changé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i As Int64 = 0 To TXT.LongCount Step 60
    car il y a que 6 colonnes au final, donc ça fonctionne merci, mais la dernière case ne s'insère pas

  8. #8
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 484
    Points : 2 265
    Points
    2 265
    Par défaut
    si tu considère 10 caractères par colonne on est à step 70!

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    En mettant un step de 70 pour 6 colonnes et 10 caractères à chaque fois, certains vont être écrasés non?
    La première case de chaque ligne sera pas la bonne ou je me trompe ?

  10. #10
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 484
    Points : 2 265
    Points
    2 265
    Par défaut
    chez mois ca fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     For i As Int64 = 0 To TXT.LongCount Step 60            Dim putNewRow As DataRow = table.NewRow
                For k = 0 To table.Columns.Count - 1
                    If i + (k * 10) + 10 > TXT.LongCount Then Exit For
                    If k = 0 Then table.Rows.Add(putNewRow)
                    putNewRow(k) = TXT.Substring(i + (k * 10), 10)
                Next
     
     
            Next

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Je pense qu'il faut faire commencer i=0 sinon le premier caractère de la chaîne est pas inséré.
    Et la dernière case ne s'insère toujours pas .. je vais continuer à chercher vous m'avez bien aidé, merci !

  12. #12
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 484
    Points : 2 265
    Points
    2 265
    Par défaut
    j'ai modifié mais trop tard

    ici j'ai 174 caractères!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      TXT = "En mettant un step de 70 pour 6 colonnes et 10 caractères à chaque fois, certains vont être écrasés non?
    La première case de chaque ligne sera pas la bonne ou je me trompe ?"
            For i As Int64 = 0 To TXT.LongCount Step 60
                Dim putNewRow As DataRow = table.NewRow
                For k = 0 To table.Columns.Count - 1
                    If i + (k * 10) > TXT.LongCount Then Exit For
                    If k = 0 Then table.Rows.Add(putNewRow)
                    putNewRow(k) = (TXT + "          ").Substring(i + (k * 10), 10)
                Next
            Next
    Nom : image_2021-04-30_162002.png
Affichages : 230
Taille : 12,5 Ko

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Effectivement ça marche !
    Merci beaucoup ^^

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

Discussions similaires

  1. Remplir une dataTable jquery avec une BDD
    Par Sarz29 dans le forum jQuery
    Réponses: 3
    Dernier message: 31/10/2019, 14h47
  2. Réponses: 0
    Dernier message: 10/09/2011, 19h32
  3. Réponses: 4
    Dernier message: 28/04/2009, 16h32
  4. Réponses: 2
    Dernier message: 09/07/2007, 13h09
  5. Réponses: 5
    Dernier message: 05/07/2007, 09h01

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