Los que hace es simplemente acomodar por fecha dentro de un rango de fechas, ¿qué es esto de rango de fechas? bueno simplemente si yo especifico a Text1 20/07/2010 y al Text2 28/07/2010 y le doy click al commandobutton [Filtrar] me filtra toda la informacion q aparece en mi listview. Dejándome solamente desde la fecha 20/07/2010 hasta la fecha 28/07/2010 todos los datos, y ordenados por fecha de menor a mayor. La información q aparece en el ListView es MUCHA! es por eso tal ves aveces me mescle algúna q otra fecha.
Modulo:
Código
Public Sub ordenarLV(LV As ListView, col As Integer) Dim Formato As String, i As Long, strData() As String 1 'ORDENAR LISTVIEW POR FECHA DE PASADO A PRESENTE 2 Formato = "YYYYMMDD" 3 With LV 4 With .ListItems 5 For i = 1 To .Count 6 With .Item(i).ListSubItems(col) 7 .Tag = .Text & Chr$(0) & .Tag 8 If IsDate(.Text) Then 9 .Text = Format(CDate(.Text), Formato) 10 Else 11 .Text = "" 12 End If 13 End With 14 Next i 15 End With 16 .SortOrder = 0 '.SortOrder = (.SortOrder + 1) Mod 2 ' Mayor a menor 17 .SortKey = col 18 .Sorted = True 19 With .ListItems 20 For i = 1 To .Count 21 With .Item(i).ListSubItems(col) 22 strData = Split(.Tag, Chr$(0)) 23 .Text = strData(0) 24 .Tag = strData(1) 25 End With 26 Next i 27 End With 28 End With End Sub Public Sub filtrarango(LV As ListView, F1 As String, F2 As String, col As Integer) Dim i As Long Dim Tmp As Integer Dim Day1 As String Dim Day2 As String Dim dat As String 1 'FILTRAR RANGO 2 Day1 = Mid(F1, 1, 2) 3 Day2 = Mid(F2, 1, 2) 4 'dat = Mid(F1, 3, 10) 6 With LV 7 Tmp = .ListItems.Count 8 For i = 1 To Tmp 9 If i > Tmp Then Exit For 10 dat = .ListItems(i).ListSubItems(col) 11 dat = Mid(dat, 1, 2) 12 If dat >= Day1 And dat <= Day2 Then 13 Else 14 'MsgBox dat 15 .ListItems.Remove i 16 i = i - 1 17 Tmp = Tmp - 1 18 If i = Tmp Then Exit For 19 End If 20 Next i 21 End With End Sub
Form:
Código
Private Sub Form_Load() Text1.Text = "20/07/2010" Text2.Text = "28/07/2010" End Sub Private Sub cmdrango_Click() Call filtrarango(LV, Text1.Text, Text2.Text, "3") Call ordenarLV(LV, "3") 'En la columna 3 del listview tengo las fechas. End Sub
Espero que puedan evitar mi problema, ya q muy pocas veces me mescla las fechas. Pregunto el problema puede ser porque llamo a las 2 funsiones a la ves, y si no es ese el problema cual es?
Salu2 y gracias a todos