ORDENAR LISTVIEW POR DATA ?

FERDEAD 05/05/2006 21:31:07
#145268
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 ?
MARCOSAV 06/05/2006 00:58:35
#145281
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)

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+
FERDEAD 06/05/2006 18:19:15
#145342
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!
Tópico encerrado , respostas não são mais permitidas