Ho trovato su un libro una Function che permette di ordinare colonne di ListView con valori numerici e date (sapete bene che la proprietà Sort delle Listview ordina solo stringhe)
La funzione in pratica crea una nuova colonna in cui inserisci i numeri che voglio ordinare formattandoli con tanti "0" davanti in modo che possano poi essere ordinati come stringhe, ordina la listview, e poi elimina la nuova colonna, la funzione è questa:
codice:
Public Function ordinaLV(LV As ListView, ByVal ColumnIndex As Integer, SortOrder As Integer, Optional IsDateValue As Boolean)
Dim li As ListItem, number As Double, newindex As Integer
LV.Visible = False
LV.Sorted = False
LV.ColumnHeaders.Add , , "dummy column", 1
newindex = LV.ColumnHeaders.Count - 1
For Each li In LV.ListItems
If IsDateValue Then
number = DateValue(li.ListSubItems(ColumnIndex - 1))
Else
number = CDbl(li.ListSubItems(ColumnIndex - 1))
End If
li.ListSubItems.Add , , Format$(number, "000000000000000.000")
Next li
LV.SortKey = newindex
LV.SortOrder = SortOrder
LV.Sorted = True
LV.ColumnHeaders.Remove newindex + 1
For Each li In LV.ListItems
li.ListSubItems.Remove newindex
Next
LV.Visible = True
LV.SortKey = ColumnIndex - 1
End Function
Il problema è che NON funziona con le date, coi numeri si, ma con le date no..
Allora ho provato a sostituire la riga:
number = DateValue(li.ListSubItems(ColumnIndex - 1))
con:
number = DateDiff("d", li.ListSubItems(ColumnIndex - 1), #12/31/2999#)
ma non va uguale.......
Ho pensato che il problema potrebbe essere il modo di scrivere la data che nel mio DB ha il formato italiano (gg/mm/aaaa) mentre vb6 credo voglia il formato inglese (mm/gg/aaaa).. Boh?
Suggerimenti???
Grazie mille e scusate la lunghezza del post..