数据库比较大,所以每次按表头用SQL语句排序比较慢,但是用LISTVIEW自身的SORT也不行,它是以字符串来排序的而不是数字,所以会出现99.20>986.20, -1.4>0.0 的情况,有何方法解决?

解决方案 »

  1.   

    gz
    我遇到了解决的就是改SQL重加载但速度 .... 嗷嗷慢
      

  2.   

    我这儿有一个源码来实现listview按数据排序的功能你也可以到http://www.mvps.org/vb/code/LVStyles.zip下载到
      

  3.   

    Private Sub LVTest_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)    LVTest.Sorted = True
        LVTest.SortKey = ColumnHeader.Index - 1
        Dim i As Integer
        For i = 1 To LVTest.ColumnHeaders.Count
            LVTest.ColumnHeaders(i).Icon = None
        Next i
        If LVTest.SortOrder = lvwAscending Then
            ColumnHeader.Icon = 1
            LVTest.SortOrder = lvwDescending
        Else
            ColumnHeader.Icon = 2
            LVTest.SortOrder = lvwAscending
        End If
        
    End Sub
      

  4.   

    我有Listview按數字、MAC地址、IP地址等排序的源代碼。有意請聯繫我。
    MSN:[email protected]
      

  5.   

    If ColumnHeader.TEXT <> "员工工号" Then 'And ColumnHeader.TEXT <> "个人序号" And ColumnHeader.TEXT <> "处室序号" Then
            For lngIndex = 1 To lvwlist.ListItems.Count
                lvwlist.ListItems(lngIndex).SubItems(ColumnHeader.Index - 1) = Format(lvwlist.ListItems(lngIndex).SubItems(ColumnHeader.Index - 1), "000000000000")
            Next
        End If
        
        With lvwlist
            If (ColumnHeader.Index - 1) = .SortKey Then
                .SortOrder = (.SortOrder + 1) Mod 2
            Else
            .Sorted = False
            .SortOrder = 0
            .SortKey = ColumnHeader.Index - 1
            .Sorted = True
            End If
        End With
      

  6.   

    是这样的,LVWLIST是自动按字符串排的,你可以判断标头
    然后,再处理排序方式
      

  7.   

    sql语句中加入 order by to_number(字段名)
      

  8.   

    在colheaders_click  的事件里用sql查询重排应该是最好的了
    用其他的方法会因为有时多列都是数字的时候代码烦琐代码:
    之前添加数据过程 filldata 也编好 
    public rs as adodb.recordset
    public conn as adodb.connection
    strsql 由colheaders_click  的事件里传入
    sql语句中加入 order by to_number(字段名)
    sub Order(byval strsql as string)
       set rs=conn.execute(strsql)
       call filldata
    end sub
      

  9.   

    order by convert(xxx,Fileds) ,XXX表示转化的类型,FILEDS表示排序字段 MSSQL里面可用。