欢迎光临:
  
  非常感谢您光临枕善居。本站是一个免费的基于VB,VB.NET源代码交流的平台,为大家提供优质的专业的源代码,如果您有需要,本站可以帮助在业余时间里给您寻找代码。当然,如果您有好的代码也可以在本站发布,共享给大家。
专业VB和.NET源码、编程开发教程、图标资源、USB电脑遥控器、智能家电控制开关....更多东东请进入我的淘宝小店--->
VB及.NET新源码2011(3DVD,控件+资源) 智能多路控制(串口编程开关) 带源码!


05-03
06

ADO Recordset 添加到 ListView

Public Sub RSToListview(ByRef RS As ADODB.Recordset, ByRef LV As ListView, Optional bClr As Boolean)
    On Error Goto errHand
    LV.ListItems.Clear


    If RS.State = adStateOpen Then


        If Not (RS.BOF And RS.EOF) Then
            Dim i As Integer, j As Integer, iCt As Integer
            Dim lngType() As Long
            Dim sngPct() As Single
            Dim lWid() As Long, lTotalWid As Long
            Dim li As ListItem
            '// LV must be set to lvwreport to show
            '     ColumnHeaders...
            LV.View = lvwReport
            iCt = RS.Fields.Count - 1
            ReDim lWid(0 To iCt)
            ReDim sngPct(0 To iCt)
            ReDim lngType(0 To iCt)


            For i = 0 To iCt
                '// Make sure it's at least 10 wide...


                If RS(i).DefinedSize > 9 Then
                    lWid(i) = RS(i).DefinedSize
                Else
                    lWid(i) = 10
                End If
                lTotalWid = lTotalWid + lWid(i)
            Next


            For i = 0 To iCt
                sngPct(i) = lWid(i) / lTotalWid
                lngType(i) = RS.Fields(i).Type
            Next


            If bClr = True Then
                LV.ColumnHeaders.Clear
            End If


            If LV.ColumnHeaders.Count = 0 Then


                For i = 0 To iCt
                    LV.ColumnHeaders.Add , , RS.Fields(i).Name, LV.Width * sngPct(i)
                Next
            Else


                For i = 0 To iCt
                    LV.ColumnHeaders(i + 1).Width = LV.Width * sngPct(i)
                Next
            End If
            RS.MoveFirst


            While Not RS.EOF


                If lngType(0) = adBoolean Then


                    If RS.Fields(0).Value = vbFalse Then
                        Set li = LV.ListItems.Add(, , "NO")
                    Else
                        Set li = LV.ListItems.Add(, , "YES")
                    End If
                Else
                    Set li = LV.ListItems.Add(, , RS.Fields(0).Value)
                End If


                If iCt > 0 Then


                    For j = 1 To iCt


                        If lngType(j) = adBoolean Then


                            If RS.Fields(j).Value = vbFalse Then
                                li.ListSubItems.Add , , "NO"
                            Else
                                li.ListSubItems.Add , , "YES"
                            End If
                        Else
                            li.ListSubItems.Add , , RS.Fields(j).Value
                        End If
                    Next
                End If
                RS.MoveNext
            Wend
            LV.Sorted = True
            LV.SortKey = 0
        End If
    End If
    exitSub:
    Exit Sub
    errHand:
    MsgBox "Error In RSToListview: " & Err.Description & " ", vbCritical
End Sub


相关日志:
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 2 | 引用: 0 | 查看次数: 7145

回复回复asdfd898 [2010-06-20 05:36:34 |  | del]
当你需要的时候,才知道用处所在。。
回复回复gelinqing [2005-12-25 19:17:09 |  | del]
这个有什么作用啊?求解
发表评论
您没有权限发表评论!