ORDENAR LISTVIEW POR DATA ?
Olá !
Preenchi uma tabela em um listview, com vários campos...
peguei um código aqui do site, que ordena os dados por ordem alfabética, e não está funcionando bem com campos do tipo DATA, ele ordena 10/02/2006, 11/01/2006, e assim por diante... está em ordem alfabética!
E também em campos numéricos ele ordena de forma errada também... 1,10,2,3,4,5 ....
Como resolver esse problema ?
Preenchi uma tabela em um listview, com vários campos...
peguei um código aqui do site, que ordena os dados por ordem alfabética, e não está funcionando bem com campos do tipo DATA, ele ordena 10/02/2006, 11/01/2006, e assim por diante... está em ordem alfabética!
E também em campos numéricos ele ordena de forma errada também... 1,10,2,3,4,5 ....
Como resolver esse problema ?
FERDEAD, blz ?? Dá uma olhada neste código e veja se é o que vc quer... (como teste, apenas cloque um ListView no seu form e execute)
Qualquer coisa, poste novamente, vlw ???
Abraço
T+
Option Explicit
Private Sub Form_Load()
Dim oListItem As MSComctlLib.ListItem
Dim d As Double
ListView1.View = lvwReport
With ListView1.ColumnHeaders
.Add Text:="Número"
.Add Text:="Data"
End With
' Preenche o List com 100 linhas
With ListView1.ListItems
Do While .Count < 100
Set oListItem = .Add(Text:="Item: " & .Count + 1)
d = Rnd * 37300 ' adiciona datas randomicamente
oListItem.ListSubItems.Add(Text:=CDate(d)).Tag = d
Loop
End With
End Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Dim oListItem As MSComctlLib.ListItem
If ColumnHeader.Index = 2 Then
For Each oListItem In ListView1.ListItems
oListItem.SubItems(1) = _
Format$(oListItem.ListSubItems(1).Tag, _
"yyyymmddHHMMSS")
Next oListItem
End If
With ListView1
.SortKey = ColumnHeader.Index - 1
.Sorted = True
If .SortOrder = lvwAscending Then
.SortOrder = lvwDescending
Else
.SortOrder = lvwAscending
End If
End With
If ColumnHeader.Index = 2 Then
For Each oListItem In ListView1.ListItems
oListItem.SubItems(1) = _
CDate(oListItem.ListSubItems(1).Tag)
Next oListItem
End If
End Sub
Qualquer coisa, poste novamente, vlw ???
Abraço
T+
MarcoSav, seu código funcionou a ordenação pela data, 100%, mas o campo númerico ele ainda ordena, 1, 10, 100, 2, 3, 4, 5,6....
Obrigado!
Obrigado!
Tópico encerrado , respostas não são mais permitidas