我可以给你段程序 会不会用就看你了 Sub Explistv(ll As ListView, rr As ADODB.Recordset, bt As Boolean) '将ADO记录集直接输出到LISTVIEW Dim r As New ADODB.Recordset Dim i As Integer Dim itmx As ListItem Set r = rr ll.ListItems.Clear'添加标题 If bt = True Then ll.ColumnHeaders.Clear For i = 0 To r.Fields.Count - 1 ll.ColumnHeaders.Add , , Trim(r.Fields(i).Name) Next End If '添加内容 Do While Not r.EOF Set itmx = ll.ListItems.Add(, , Trim(r.Fields(0).Value)) For i = 1 To r.Fields.Count - 1 '字符型 If r.Fields(i).Type = adChar Or adLongVarChar Or adVarChar Then itmx.SubItems(i) = IIf(IsNull(r.Fields(i).Value), " ", r.Fields(i).Value) End If '数字型 If r.Fields(i).Type = adDouble Or adNumeric Then itmx.SubItems(i) = IIf(IsNull(r.Fields(i).Value), 0, r.Fields(i).Value) End If '日期型 If r.Fields(i).Type = adDate Then itmx.SubItems(i) = Format(r.Fields(i).Value, "yyyy-MM-dd") End If Next r.MoveNext Loop 'r.Close End Sub
2:最好少用绑定
Sub Explistv(ll As ListView, rr As ADODB.Recordset, bt As Boolean)
'将ADO记录集直接输出到LISTVIEW
Dim r As New ADODB.Recordset
Dim i As Integer
Dim itmx As ListItem
Set r = rr
ll.ListItems.Clear'添加标题
If bt = True Then
ll.ColumnHeaders.Clear
For i = 0 To r.Fields.Count - 1
ll.ColumnHeaders.Add , , Trim(r.Fields(i).Name)
Next
End If
'添加内容
Do While Not r.EOF
Set itmx = ll.ListItems.Add(, , Trim(r.Fields(0).Value))
For i = 1 To r.Fields.Count - 1
'字符型
If r.Fields(i).Type = adChar Or adLongVarChar Or adVarChar Then
itmx.SubItems(i) = IIf(IsNull(r.Fields(i).Value), " ", r.Fields(i).Value)
End If
'数字型
If r.Fields(i).Type = adDouble Or adNumeric Then
itmx.SubItems(i) = IIf(IsNull(r.Fields(i).Value), 0, r.Fields(i).Value)
End If
'日期型
If r.Fields(i).Type = adDate Then
itmx.SubItems(i) = Format(r.Fields(i).Value, "yyyy-MM-dd")
End If
Next
r.MoveNext
Loop
'r.Close
End Sub