Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Listview] remplir a partir d'une BDD access

1 réponse
Avatar
Franck
Bonjour

J'utilise la sub suivante (pour remplir mon listview a partir d'une requete
sur une BDD access:

Public Sub RemplirListView(sql As String, LV As ListView)
On Error Resume Next
Dim Rs As ADODB.Recordset
Set Rs = New ADODB.Recordset
Dim i As Long
Dim j As Long
Dim k As Long

Rs.Open sql, con, adOpenStatic, adLockOptimistic

For i = 0 To Rs.Fields.Count - 1

LV.ColumnHeaders.Add , , Rs.Fields(i).Name
Next i

Screen.MousePointer = 11
For k = 0 To Rs.RecordCount


If IsNull(Rs.Fields(0).value) Then _
LV.ListItems.Add , , "" Else LV.ListItems.Add , ,
Rs.Fields(0).value

For j = 1 To Rs.Fields.Count

If IsNull(Rs.Fields(1).value) Then _
LV.ListItems.Item(k + 1).ListSubItems.Add , , "" Else
LV.ListItems.Item(k + 1).ListSubItems.Add , , Rs.Fields(j).value
Next j
Rs.MoveNext
Next k
Screen.MousePointer = 0
Rs.Close
Set Rs = Nothing
end sub


Mon problème c'est que certain champs de ma bdd sont vides donc au
remplissage il y a un décalage: des valeurs du champs i remplissent la
colonne i-1 de mon listview a la place des valeurs vides

Quelqu'un a til une idee svp?

Merci
Cordialement
VB6

1 réponse

Avatar
Hervé
Salut Franck,
Voila ce que j'utilise, adapte le chemin de la base et la chaine SQL. Cela
fonctionne bien chez moi :

Public Sub ConnecterBase(ConnectBD As ADODB.Connection, _
Optional Rs)

Set ConnectBD = New ADODB.Connection
If Not IsMissing(Rs) Then
Set Rs = New ADODB.Recordset
End If

With ConnectBD
.Provider = "Microsoft.Jet.OLEDB.4.0"
'ici changer le chemin de la base
.ConnectionString = "D:stats.mdb"
.Open
End With

End Sub


Private Sub Form_Load()
Dim ConnectBD As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Elements As ListItem
Dim I As Integer
Dim J As Integer

ConnecterBase ConnectBD, Rs

With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM T_Vendeur", ConnectBD

For I = 0 To .Fields.Count - 1
ListView1.ColumnHeaders.Add , , .Fields(I).Name, 2000
Next I

ListView1.View = 3

Do While Not .EOF
Set Elements = ListView1.ListItems.Add(, , .Fields(0))
For J = 1 To .Fields.Count - 1
If Not IsNull(.Fields(J)) Then
Elements.SubItems(J) = .Fields(J)
End If
Next J
.MoveNext
Loop
End With

ConnectBD.Close
Set ConnectBD = Nothing
Set Rs = Nothing
Set Elements = Nothing

End Sub

Hervé.



"Franck" a écrit dans le message de news:

Bonjour

J'utilise la sub suivante (pour remplir mon listview a partir d'une


requete
sur une BDD access:

Public Sub RemplirListView(sql As String, LV As ListView)
On Error Resume Next
Dim Rs As ADODB.Recordset
Set Rs = New ADODB.Recordset
Dim i As Long
Dim j As Long
Dim k As Long

Rs.Open sql, con, adOpenStatic, adLockOptimistic

For i = 0 To Rs.Fields.Count - 1

LV.ColumnHeaders.Add , , Rs.Fields(i).Name
Next i

Screen.MousePointer = 11
For k = 0 To Rs.RecordCount


If IsNull(Rs.Fields(0).value) Then _
LV.ListItems.Add , , "" Else LV.ListItems.Add , ,
Rs.Fields(0).value

For j = 1 To Rs.Fields.Count

If IsNull(Rs.Fields(1).value) Then _
LV.ListItems.Item(k + 1).ListSubItems.Add , , "" Else
LV.ListItems.Item(k + 1).ListSubItems.Add , , Rs.Fields(j).value
Next j
Rs.MoveNext
Next k
Screen.MousePointer = 0
Rs.Close
Set Rs = Nothing
end sub


Mon problème c'est que certain champs de ma bdd sont vides donc au
remplissage il y a un décalage: des valeurs du champs i remplissent la
colonne i-1 de mon listview a la place des valeurs vides

Quelqu'un a til une idee svp?

Merci
Cordialement
VB6