VB.net : liste box et base de données

fabts Messages postés 15 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 8 juin 2004 - 7 juin 2004 à 11:21
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 - 8 juin 2004 à 10:36
Bonjour à tous,

J'essaye de remplir une liste box avec une base de données...seulement je n'y arrive pas !! Alors comment fait-on ? Sachant que j'ai plusieurs colonne a mettre dans la list box.....PLEAZ HELPP !!!

Merci d'avance !

Fab.

12 réponses

cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 5
7 juin 2004 à 13:19
Salut,

uen listbox ne comprend qu'une seule colonne si tu veux du multi colonnes il faut utiliser une listview.

Dis moi comment tu récupère les données de ta base et j'essayerai de te fournir le code pour remplir la listview.

@+

Ex:

'Créer une listview avec le nombre de colums correspondant au nombre de champs BDD à faire afficher

'Boucle for qui va parcourir les données
For i=0 to NOMBRE_DE_LIGNE
'Déclaration d'une liste qui va contenir tous les itmes et sous-item à ajouter
'Ajout du subitem(0) de l'item(i)
dim list as new listviewitem(CHAMP_BDD_1)
'Ajout du subitem(1) de l'item(i)
list.subitems.add(CHAMP_BDD_2)
....
'Ajout d'un nouvel itme à la listview
listView1.items.add(list)
next
LIM
0
fabts Messages postés 15 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 8 juin 2004
7 juin 2004 à 17:00
J'ai une base de données sur un server MY SQL SERVER 2003. Et puis voila, je les récupéère ave cun sqlAdapter et un dataSet.....
Si tu peux m'aider c'est vraiment sympa...car la je galère bien comme il faut !
Merci d'avance !
Fab.
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 5
7 juin 2004 à 17:17
OK

Si tu as un dataset

'Créer une listeview (en mode graphique): listview1
'Propriété à modifier (dans la boite Propriété de l'élément):'FullRowSelect TRUE : 1click sélection de la ligne
'Gridlines = TRUE : Affiche un quadrillage
'View : Détails : pour voir les colonnes
'Dans Colums : ajouter le nombre de colonnes désirées

'Trouver le nombre de ligne à mettre dans la listview
Dim i,nbligne as integer
nbligne=DataSet1.Tables("MATABLE").rows.count
'Boucle pour afficher la table
for i=0 to nbligne-1
'Déclaration d'un objet listViewItem : ilva servir à remplir la listView1, ici ajout du subitem(0)
Dim List as new ListViewItem(cstr(DataSet1.Tables("MATABLE").rows(i).item("CHAMP_BDD_1")))
'Ajout du subitems(1)
list.subitems.add(cstr(DataSet1.Tables("MATABLE").rows(i).item("CHAMP_BDD_1")))
'... pour tous les champs à afficher
'Ajout de l'item(i) dans la listview
listview1.items.add(list)
next

Une listview fonctionne de la façon suivante

1 ligne = 1 item de la listview

Chaque colonne s'appelle un subitem

SI tu a toujours des souci je peux t'envoyer un exemple que j'ai fait pour sous mysql.
Fait un backup de ta base mysql et envoi le moi par mail, j'adapterai mon exemple pour ta base.
Ce sera peut-être plus parlant.

tlimondin@yahoo.fr

LIM
0
fabts Messages postés 15 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 8 juin 2004
7 juin 2004 à 17:34
T génial toi ! Nikel, pour l'aspect graphique déjà , j'ai trop galéré tout seul et la en 3 click c t plié ! lol !

Ensuite pour le code, j'ai un pb sur

Dim List as new ListViewItem(cstr(DataSet1.Tables("MATABLE").rows(i).item("CHAMP_BDD_1")))

VB souligne ListViewItem et me dit qu'il n'est pas défini....C'est a dire ? (désolé je suis vraiment un gros débutant !)

Merci d'avance...après ça devrait marcher je pense !

Merci encore,
Fab
0

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

Posez votre question
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 5
7 juin 2004 à 17:52
Désolé mais là je ne vois pas, chez moi cette ligne passe très bien.

Si tu veux envoi moi ton code (par mail) je peux essayer de le regarder

LIM
0
fabts Messages postés 15 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 8 juin 2004
7 juin 2004 à 17:56
Désolé, mais je doit partir, je t'envoie tout ça demain.

Merci pour tout en tout cas ! A demain.
voici un bout de mon code :

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Code généré par le Concepteur Windows Form "

    Public Sub New()
        MyBase.New()

        'Cet appel est requis par le Concepteur Windows Form.
        InitializeComponent()

        'Ajoutez une initialisation quelconque après l'appel InitializeComponent()

    End Sub

    'La méthode substituée Dispose du formulaire pour nettoyer la liste des composants.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Requis par le Concepteur Windows Form
    Private components As System.ComponentModel.IContainer

    'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form
    'Elle peut être modifiée en utilisant le Concepteur Windows Form.  
    'Ne la modifiez pas en utilisant l'éditeur de code.
    Friend WithEvents SqlDataAdapter1 As System.Data.SqlClient.SqlDataAdapter
    Friend WithEvents SqlSelectCommand1 As System.Data.SqlClient.SqlCommand
    Friend WithEvents SqlInsertCommand1 As System.Data.SqlClient.SqlCommand
    Friend WithEvents SqlUpdateCommand1 As System.Data.SqlClient.SqlCommand
    Friend WithEvents SqlDeleteCommand1 As System.Data.SqlClient.SqlCommand
    Friend WithEvents SqlConnection1 As System.Data.SqlClient.SqlConnection
    Friend WithEvents DataSet1 As System.Data.DataSet
    Friend WithEvents Button1 As System.Windows.Forms.Button
    Friend WithEvents Label1 As System.Windows.Forms.Label
    Friend WithEvents ListView1 As System.Windows.Forms.ListView
    Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
    Friend WithEvents ColumnHeader3 As System.Windows.Forms.ColumnHeader
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.SqlDataAdapter1 = New System.Data.SqlClient.SqlDataAdapter()
        Me.SqlDeleteCommand1 = New System.Data.SqlClient.SqlCommand()
        Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection()
        Me.SqlInsertCommand1 = New System.Data.SqlClient.SqlCommand()
        Me.SqlSelectCommand1 = New System.Data.SqlClient.SqlCommand()
        Me.SqlUpdateCommand1 = New System.Data.SqlClient.SqlCommand()
        Me.DataSet1 = New System.Data.DataSet()
        Me.Button1 = New System.Windows.Forms.Button()
        Me.Label1 = New System.Windows.Forms.Label()
        Me.ListView1 = New System.Windows.Forms.ListView()
        Me.ColumnHeader1 = New System.Windows.Forms.ColumnHeader()
        Me.ColumnHeader2 = New System.Windows.Forms.ColumnHeader()
        Me.ColumnHeader3 = New System.Windows.Forms.ColumnHeader()
        CType(Me.DataSet1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'SqlDataAdapter1
        '
        Me.SqlDataAdapter1.DeleteCommand = Me.SqlDeleteCommand1
        Me.SqlDataAdapter1.InsertCommand = Me.SqlInsertCommand1
        Me.SqlDataAdapter1.SelectCommand = Me.SqlSelectCommand1
        Me.SqlDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "listesdiff", New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("id_listediff", "id_listediff"), New System.Data.Common.DataColumnMapping("nom_listediff", "nom_listediff"), New System.Data.Common.DataColumnMapping("type_listediff", "type_listediff"), New System.Data.Common.DataColumnMapping("id_utilisateur", "id_utilisateur")})})
        Me.SqlDataAdapter1.UpdateCommand = Me.SqlUpdateCommand1
        '
        'SqlDeleteCommand1
        '        Me.SqlDeleteCommand1.CommandText "DELETE FROM listesdiff WHERE (id_listediff @Original_id_listediff) AND (id_util" & _        "isateur @Original_id_utilisateur) AND (nom_listediff @Original_nom_listediff" & _
        ") AND (type_listediff = @Original_type_listediff OR @Original_type_listediff IS " & _
        "NULL AND type_listediff IS NULL)"
        Me.SqlDeleteCommand1.Connection = Me.SqlConnection1
        Me.SqlDeleteCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_id_listediff", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "id_listediff", System.Data.DataRowVersion.Original, Nothing))
        Me.SqlDeleteCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_id_utilisateur", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "id_utilisateur", System.Data.DataRowVersion.Original, Nothing))
        Me.SqlDeleteCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_nom_listediff", System.Data.SqlDbType.NVarChar, 255, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "nom_listediff", System.Data.DataRowVersion.Original, Nothing))
        Me.SqlDeleteCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_type_listediff", System.Data.SqlDbType.NVarChar, 10, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "type_listediff", System.Data.DataRowVersion.Original, Nothing))
        '
        'SqlConnection1
        '
        Me.SqlConnection1.ConnectionString = "data source=EMAILING;initial catalog=MailBacata;password=bacata;persist security " & _
        "info=True;user id=emailing;workstation id=FABIEN;packet size=4096"
        '
        'SqlInsertCommand1
        '
        Me.SqlInsertCommand1.CommandText = "INSERT INTO listesdiff(nom_listediff, type_listediff, id_utilisateur) VALUES (@no" & _
        "m_listediff, @type_listediff, @id_utilisateur); SELECT id_listediff, nom_listedi" & _
        "ff, type_listediff, id_utilisateur FROM listesdiff WHERE (id_listediff = @@IDENT" & _
        "ITY)"
        Me.SqlInsertCommand1.Connection = Me.SqlConnection1
        Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@nom_listediff", System.Data.SqlDbType.NVarChar, 255, "nom_listediff"))
        Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@type_listediff", System.Data.SqlDbType.NVarChar, 10, "type_listediff"))
        Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@id_utilisateur", System.Data.SqlDbType.Int, 4, "id_utilisateur"))
        '
        'SqlSelectCommand1
        '
        Me.SqlSelectCommand1.CommandText = "SELECT id_listediff, nom_listediff, type_listediff, id_utilisateur FROM listesdif" & _
        "f WHERE (id_utilisateur = 2)"
        Me.SqlSelectCommand1.Connection = Me.SqlConnection1
        '
        'SqlUpdateCommand1
        '        Me.SqlUpdateCommand1.CommandText "UPDATE listesdiff SET nom_listediff @nom_listediff, type_listediff = @type_list" & _        "ediff, id_utilisateur @id_utilisateur WHERE (id_listediff @Original_id_liste" & _        "diff) AND (id_utilisateur @Original_id_utilisateur) AND (nom_listediff @Orig" & _
        "inal_nom_listediff) AND (type_listediff = @Original_type_listediff OR @Original_" & _
        "type_listediff IS NULL AND type_listediff IS NULL); SELECT id_listediff, nom_lis" & _
        "tediff, type_listediff, id_utilisateur FROM listesdiff WHERE (id_listediff = @id" & _
        "_listediff)"
        Me.SqlUpdateCommand1.Connection = Me.SqlConnection1
        Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@nom_listediff", System.Data.SqlDbType.NVarChar, 255, "nom_listediff"))
        Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@type_listediff", System.Data.SqlDbType.NVarChar, 10, "type_listediff"))
        Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@id_utilisateur", System.Data.SqlDbType.Int, 4, "id_utilisateur"))
        Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_id_listediff", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "id_listediff", System.Data.DataRowVersion.Original, Nothing))
        Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_id_utilisateur", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "id_utilisateur", System.Data.DataRowVersion.Original, Nothing))
        Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_nom_listediff", System.Data.SqlDbType.NVarChar, 255, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "nom_listediff", System.Data.DataRowVersion.Original, Nothing))
        Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_type_listediff", System.Data.SqlDbType.NVarChar, 10, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "type_listediff", System.Data.DataRowVersion.Original, Nothing))
        Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@id_listediff", System.Data.SqlDbType.Int, 4, "id_listediff"))
        '
        'DataSet1
        '
        Me.DataSet1.DataSetName = "NewDataSet"
        Me.DataSet1.Locale = New System.Globalization.CultureInfo("fr-FR")
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(480, 64)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(112, 64)
        Me.Button1.TabIndex = 1
        Me.Button1.Text = "Button1"
        '
        'Label1
        '
        Me.Label1.Location = New System.Drawing.Point(472, 192)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(144, 88)
        Me.Label1.TabIndex = 2
        Me.Label1.Text = "Label1"
        '
        'ListView1
        '
        Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2, Me.ColumnHeader3})
        Me.ListView1.FullRowSelect = True
        Me.ListView1.GridLines = True
        Me.ListView1.Location = New System.Drawing.Point(16, 24)
        Me.ListView1.Name = "ListView1"
        Me.ListView1.Size = New System.Drawing.Size(416, 416)
        Me.ListView1.TabIndex = 4
        Me.ListView1.View = System.Windows.Forms.View.Details
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(664, 493)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListView1, Me.Label1, Me.Button1})
        Me.Name = "Form1"
        Me.Text = "Form1"
        CType(Me.DataSet1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SqlDataAdapter1.Fill(DataSet1, "toto")
        ' Les 2 lignes suivantes peuvent être faites en mode DesignTime
        ' DataGrid1.DataSource = DataSet1
        'DataGrid1.DataMember = "toto"

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        'DataGrid1.ColumnHeadersVisible = False
        'Label1.Text = DataGrid1.CurrentCell.RowNumber
        'Label1.Text = DataGrid1.CurrentRowIndex

        'ListBox1.DataSource = DataSet1
        'ListBox1.MultiColumn = True

        'Créer une listeview (en mode graphique): listview1
        'Propriété à modifier (dans la boite Propriété de l'élément):        'FullRowSelect TRUE : 1click sélection de la ligne
        'Gridlines = TRUE : Affiche un quadrillage
        'View : Détails : pour voir les colonnes
        'Dans Colums : ajouter le nombre de colonnes désirées

        'Trouver le nombre de ligne à mettre dans la listview
        Dim i, nbligne As Integer
        nbligne = DataSet1.Tables("listesdiff").Rows.Count
        'Boucle pour afficher la table
        For i = 0 To nbligne - 1
            'Déclaration d'un objet listViewItem : il va servir à remplir la listView1, ici ajout du subitem(0)
            Dim List As New System.Windows.Forms.ListViewItem(CStr(DataSet1.Tables("listesdiff").Rows(i).Item("id_utilisateur")))
            'Ajout du subitems(1)
            List.subitems.add(CStr(DataSet1.Tables("listesdiff").Rows(i).Item("nom_listediff")))
            '... pour tous les champs à afficher
            'Ajout de l'item(i) dans la listview
            ListView1.Items.Add(List)
        Next

    End Sub

End Class


Voila ya tout ici ! Merci d'avance !
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 5
8 juin 2004 à 08:18
J'ai intégré le code dans un projet vierge et tout passe très bien.

Désolé mais mà je ne vois pas d'où çà vient.

LIM
0
fabts Messages postés 15 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 8 juin 2004
8 juin 2004 à 09:12
Peut etre y'a t'il des référence a faire ou autre ? Une option que je n'ai pas activé ? En tout cas ça ne marche pas, il ne reconnais pas le listview1. Alors crois tu que c'est un pb de configuration de mon espace de travail ?

Fab
0
fabts Messages postés 15 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 8 juin 2004
8 juin 2004 à 09:18
Qui plus en bricolant un peu j'ai pu passer cette erreur mais j'en ai une autre sur le

nbligne = DataSet1.Tables("listesdiff").Rows.Count


erreur :
'System.NullReferenceException' s'est produite dans dataGrid.exe.
La référence d'objet n'est pas définie à une instance d'un objet.

PLZZZZZZZZ help !
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 5
8 juin 2004 à 09:43
Je pense que tu n'a pas ajouter de table au dataset

'En variable globale de la form
Dim TATABLE as new Data.DataTable("TEST")

private sub form1_load...
'Vide la dataset
DATASET1.TABLES.CLEAR
'Ajoute une nouvelle table
DATASET1.TABLES.ADD(TATABLE)
'On peut ajouter plusieurs tables à 1 DATASET
...
en sub

private sub TEST

dim nbligne as integer
nbligne=DATASET1.TABLES("TEST").rows.count
end sub

Essaye çà,
sinon je peux toujours t'envoyer un exemple par mail
LIM
0
fabts Messages postés 15 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 8 juin 2004
8 juin 2004 à 10:33
Bon en fait oué, ça marche pas, j'ai plein de merde, je comprend pas déjà le coup du ListViewItem qui n'est pas déclarer je capte pa ! Je vais qd meme tenter de faire ce que tu viens de me dire et je verrai bien. Mais si tu veux m'envoé par mail un petit exemple je suis d'accord.

Merci d'avance
Fab.
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 5
8 juin 2004 à 10:36
Voilà mon adresse tlimondin@yahoo.fr

Envoi un mail ou laisse moi ton adresse pour que je récupère la tienne.

Je t'envoi çà dans la journée

@+

LIM
0