欢迎光临:
非常感谢您光临枕善居。本站是一个免费的基于VB,VB.NET源代码交流的平台,为大家提供优质的专业的源代码,如果您有需要,本站可以帮助在业余时间里给您寻找代码。当然,如果您有好的代码也可以在本站发布,共享给大家。
专业VB和.NET源码、编程开发教程、图标资源、USB电脑遥控器、智能家电控制开关....更多东东请进入我的淘宝小店--->
VB及.NET新源码2011(3DVD,控件+资源)
智能多路控制(串口编程开关) 带源码!
05-03
06
ADO Recordset 添加到 ListView
作者:枕善居主 / 查看次数: 7145 / 评论: 2
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
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 |
回复
|
]