Listview

cs_anakin2 Messages postés 3 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 7 décembre 2004 - 7 déc. 2004 à 22:36
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 8 déc. 2004 à 08:56
Bonjour!
je débute en vb6 et je souhaiterais formater les champs de colonnes d'une listview de maniere dynamique et selon le contenu de la table mysql de maniere à automatiser ce qui suit sachant que j'ai plusieurs tables a lister n'ayant pas le meme contenu .

Private Sub Form_Load()
' Initialisation de la listview1
' On efface les colonnes
ListView1.ColumnHeaders.Clear
' On ajoute le nom des colonnes
ListView1.ColumnHeaders.Add.Text = "Numéro"
ListView1.ColumnHeaders.Add.Text = "Titre"
ListView1.ColumnHeaders.Add.Text = "Acteur ou interprete"
ListView1.ColumnHeaders.Add.Text = "Durée"
ListView1.ColumnHeaders.Add.Text = "Commentaire"
ListView1.ColumnHeaders.Add.Text = "Fichier"

merci par avance!

2 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
8 déc. 2004 à 08:52
A toi d'adapter la ConnectionString pour que çà colle avec ta base
mysql.

Il te faut :
une combo nommée ComboBox1
une ListView nommée ListView1


Public connection As ADODB.connection
Public comm As ADODB.Command
Public table As ADODB.Recordset

Private Sub ComboBox1_Click()
    
    chargeTable ComboBox1.List(ComboBox1.ListIndex)
End Sub

Private Sub Command1_Click(Index As Integer)
    Load Form2
    Form2.chargeEnregistrement ComboBox1.List(ComboBox1.ListIndex), ListView1.SelectedItem.Text
    Form2.Show
End Sub

Private Sub Form_Load()
Dim i As Long
Dim j As Long

    Set connection = New ADODB.connection
    Set table = New ADODB.Recordset
    Set enregistrement = New ADODB.Record
    Set comm = New ADODB.Command
    
     connection.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=nom_de_ta_base;USER=user;PASSWORD=pwd;OPTION=3;"
     
    connection.Open
    
    Set table = connection.Execute("show tables")
    
    table.MoveFirst
    i = 1
    While Not table.EOF
        ComboBox1.AddItem table(0)
        table.MoveNext
    Wend
    table.Close
    Set table = Nothing
End Sub

Private Sub chargeTable(sNomTable As String)

    Set table = connection.Execute("select * from " & sNomTable)
    ListView1.ListItems.Clear
    ListView1.ColumnHeaders.Clear
    table.MoveFirst
    i = 1
    For i = 0 To table.Fields.Count - 1
        ListView1.ColumnHeaders.Add , , table.Fields(i).Name
    Next i
    i = 1
    While Not table.EOF
        ListView1.ListItems.Add , , table(0)
        For j = 1 To table.Fields.Count - 1
            If IsNull(table(j)) Then
                ListView1.ListItems(i).SubItems(j) = ""
            Else
                ListView1.ListItems(i).SubItems(j) = table(j)
            End If
        Next j
        i = i + 1
        table.MoveNext
    Wend
    table.Close
    Set table = Nothing
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

    connection.Close
    Set connection = Nothing
End Sub



Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
8 déc. 2004 à 08:56
Oublie cette partie de code. Elle ne te servira à rien, et surtout, plantera :

<s>Private Sub Command1_Click(Index As Integer)
Load Form2
Form2.chargeEnregistrement ComboBox1.List(ComboBox1.ListIndex), ListView1.SelectedItem.Text
Form2.Show
End Sub</s>

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
Rejoignez-nous