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 :

L'index se trouve en dehors des limites du tableau


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    rrrrrrrrrr
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : rrrrrrrrrr
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Par défaut L'index se trouve en dehors des limites du tableau
    Bonjour
    J'éssaie d'afficher des combobox.items à partir d'une bd access.
    Les items sont affichés dans le champ de cette manniére: 4|7|3
    Je veux les afficher dans la combobox d'une façon verticale.
    Je me sert de ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim SeparValeur() As String
            Dim T As Integer
            With ComboBox1
                SeparValeur = Split("verse", "|")
                For T = 0 To 5
                    .Items.Add(SeparValeur(T))
                Next T
    Je reçois ce message:
    L'index se trouve en dehors des limites du tableau
    Merci

  2. #2
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Ton tableau a combien d'élements? Fais attention à la taille du tableau. Si c'est 5 éléments, alors tu devrais avoir:
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For T = 0 To 4
                    .Items.Add(SeparValeur(T))
                Next T

  3. #3
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SeparValeur = Split("verse", "|")
    Tu demandes de décomposer la chaîne "verse" à chaque caractère | donc selon la logique, la chaîne "verse" ne contenant aucun | alors Split te retourne un tableau avec un seul élément (qui contient "verse"), et lorsque tu boucles, tu écris en dur la limite du tableau sans connaitre la limite de ton tableau, ton tableau n'ayant qu'un item, il ne peut boucler jusqu'à 5 ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim SeparValeur() As String
            Dim T As Integer
            With ComboBox1
                SeparValeur = Split("verse", "|")
                For T = 0 To SperValeur.Count() - 1
                    .Items.Add(SeparValeur(T))
                Next T
    En revanche, je ne pense pas que ce soit ce que tu souhaites faire ...
    "verse" c'est quoi ? Réellement une chaîne ou une variable pour laquelle tu as fait l'erreur de la mettre entre "" ?

    Dis-nous en plus sur ce que tu souhaites faire pour te donner des conseils adaptés.

  4. #4
    Membre confirmé
    Homme Profil pro
    rrrrrrrrrr
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : rrrrrrrrrr
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Par défaut
    Merci beaucoup de vos réponse

    En fait mon probléme et que je cherche un code qui me permet d'afficher les items du combobox d'une façon verticale.

    "verse" c'est quoi ?
    "verse" est supposée etre le nom du champ à partir du quel je voudrais récupérer les enregistrements 4|7|3 et pouvoir les afficher dans la combobox d'une maniére verticale.
    Merci

  5. #5
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Citation Envoyé par zidane22 Voir le message
    Merci beaucoup de vos réponse

    En fait mon probléme et que je cherche un code qui me permet d'afficher les items du combobox d'une façon verticale.
    Je suis pas sûr de comprendre, les items d'une combobox s'affichent déjà de manière verticale ... Tu parles d'une combobox avec plusieurs colonnes ?
    Peux-tu schématiser (même grossièrement) le résultat que tu veux obtenir avec ta combo ?


    Citation Envoyé par zidane22 Voir le message
    "verse" est supposée etre le nom du champ à partir du quel je voudrais récupérer les enregistrements 4|7|3 et pouvoir les afficher dans la combobox d'une maniére verticale.
    Merci
    Je lis enregistrement, donc je déduis que par champ tu désignes le nom d'une colonne d'une base de donnée ? Peut-on voir le code complet de ton accès à la base et de la récupération de tes données ?

  6. #6
    Membre confirmé
    Homme Profil pro
    rrrrrrrrrr
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : rrrrrrrrrr
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Par défaut
    Voici mon code pour ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim cb As New OleDb.OleDbCommandBuilder(da)
            Dim dsNewRow As DataRow
            dsNewRow = ds.Tables(0).NewRow()
            dsNewRow.Item("Nom") = TextBox1.Text
            dsNewRow.Item("Prenom") = TextBox2.Text
            dsNewRow.Item("Age") = TextBox3.Text
            dsNewRow.Item("verse") = ComboBox1.Items(0)
            For i = 1 To ComboBox1.Items.Count - 1
                dsNewRow.Item("verse") = dsNewRow.Item("verse") & "|" & CStr(ComboBox1.Items(i))
            Next
            'Dim cmd As OleDbCommand
            ds.Tables("data").Rows.Add(dsNewRow)
            da.Update(ds, "data")
    Pour la lecture:
    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
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            con = New OleDb.OleDbConnection
            con.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=" & Application.StartupPath & "\data.mdb"
     
            SQL = "SELECT * FROM table1"
            da = New OleDb.OleDbDataAdapter(SQL, con)
            da.Fill(ds, "data")
            con.Close()
            MaxRows = ds.Tables("data").Rows.Count
            DataGridView1.DataSource = ds
            DataGridView1.DataMember = "data"
    Dim SeparValeur() As String
            Dim T As Integer
            With ComboBox1
    .DataSource = ds.Tables("data")
                .DisplayMember = "verse"
                SeparValeur = Split("verse", "|")
                For T = 0 To 5
                    .Items.Add(SeparValeur(T))
                Next T
    merci

  7. #7
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour
    Verticalement votre....

    1/parcourir les row du datable
    2/pour chaque row :
    -recuperer avec l'index de colonne approprie,ton champ dans string
    -le splitter (split renvoie un tableau de string)
    -l'ajouter à combox

    archi simple et voici un exemple avec un datatable exemple avec une seule colonne :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    'ajouter :
    '- un bouton
    '- un combo
    '- un dgv pour comprendre l'exemple
    Public Class frmSplitChamp
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim dt As DataTable = New DataTable
            AjoutColonnes(dt)
            AjoutLignes(dt)
            DataGridView1.DataSource = dt
     
            For Each dr As DataRow In dt.Rows
                For i As Integer = 0 To dt.Columns.Count - 1
     
                    'lit valeur colonne
                    Dim strValeur As String = dr.Item(i).ToString
     
                    'split  valeur dans un array de string
                    Dim arStr() As String = strValeur.Split("|")
     
                    'charge le tableau dans combo....avec AddRange !!!
                    ComboBox1.Items.AddRange(arStr)
                Next
     
            Next
     
     
        End Sub
        'cree 1 colonne  pour data table exemple
        Private Sub AjoutColonnes(ByVal dt As DataTable)
     
            Dim dc As DataColumn = New DataColumn
     
            ' add column 1
            dc = New DataColumn
            dc.Caption = "Title Col1"
            dc.ColumnName = "Column1"
            dc.DataType = GetType(String)
            dc.DefaultValue = Nothing
            dt.Columns.Add(dc)
     
     
     
        End Sub
        'ajoute 4 ligne  pour data table exemple
        Private Sub AjoutLignes(ByVal dt As DataTable)
            Dim stringAr(4) As String
            stringAr(0) = "4|7|3"
            stringAr(1) = "17|23|35"
            stringAr(2) = "14|17|13"
            stringAr(3) = "1004|1007|1003"
     
            For Each item As String In stringAr
                dt.Rows.Add(item)
            Next
     
        End Sub
    End Class
    bon code....

  8. #8
    Membre confirmé
    Homme Profil pro
    rrrrrrrrrr
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : rrrrrrrrrr
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Par défaut
    merci MABROUKI
    Votre code est extraordinaire. c'ést le code que je cherche pour l'appliquer sur mon combobox.
    Malheureusement j'ai passé 2 heures essayant de l'adapter pour mon cas mais en vain.
    pourriez vous me donner un coup de main pour y arriver?
    merci

Discussions similaires

  1. [Débutant] L'index se trouve en dehors des limites du tableau
    Par zitoune31 dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/10/2012, 13h45
  2. Réponses: 2
    Dernier message: 22/05/2012, 11h01
  3. L'index se trouve en dehors des limites du tableau.
    Par kirby33380 dans le forum C#
    Réponses: 3
    Dernier message: 01/04/2010, 11h45
  4. Erreur : "L'index se trouve en dehors des limites du tableau"
    Par dotnetnuke dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 17/07/2009, 17h36
  5. L'index se trouve en dehors des limites du tableau
    Par LaDeveloppeuse dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/10/2007, 21h11

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