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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <franck112@hotmail.com> a écrit dans le message de news:
uCkCUBJdEHA.3380@TK2MSFTNGP12.phx.gbl...
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
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