Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, já li o forum todo sobre listview e não encontrei solução, por isso estou pedindo ajuda.
é o seguinte...
Uso o listview para listar os campos do banco, na primeira listagem aparece as colunas corretamente nas posições, quando faço uma filtragem através de um combo, listando por nome por exemplo a listagem é feita mas o listview muda as posições das colunas, por exemplo, onde tinha que vir telefone vem endereço.
O código para listagem logo na abertura é esse:
este código é o que lista corretamente logo na abertura.
Private Sub enche_lista()
Dim j As Long: j = 0
Dim X As Single
Do While Not rs.EOF
j = j + 1
lst_contatos.ListItems.Add , "k" & j, " " & Format(rs!Código, "0000")
For X = 1 To 7
If Not IsNull(rs(X)) Then
lst_contatos.ListItems(j).SubItems(X) = Replace(rs(X), "§", "'")
Else
lst_contatos.ListItems(j).SubItems(X) = ""
End If
Next
rs.MoveNext
Loop
End Sub
Depois
Uso este código pra fazer a filtragem usando combo
Public Sub txtFiltro()
Dim ordernarpor As String
Dim DASC As String
If cmbOrdernarPor.ListIndex = -1 Then cmbOrdernarPor.ListIndex = 0
If cmbOrdem.ListIndex = -1 Then cmbOrdem.ListIndex = 0
Select Case cmbOrdernarPor.ListIndex
Case 0
ordernarpor = "código"
Case 1
ordernarpor = "nome"
Case 2
ordernarpor = "email"
End Select
Select Case cmbOrdem.ListIndex
Case 0
DASC = "asc"
Case 1
DASC = "desc"
End Select
verifica_rs
rs.Open "select * from contatos order by " & ordernarpor & " " & DASC, cn
preenche_lista
End Sub
Ai uso este outro para listar novamente só que é ai que muda a ordem das colunas.
e esse é o que faz a listagem, é este que está mudando.
Public Sub preenche_lista()
lst_contatos.ListItems.Clear
If rs.RecordCount = 0 Then Exit Sub
While Not rs.EOF
Set lst = lst_contatos.ListItems.Add(, , rs(0))
For i = 1 To 7
lst.SubItems(i) = rs(i)
Next i
rs.MoveNext
Wend
End Sub
Se tiver como me ajudarem ficarei agradecido.
Carregando comentários...