VB6 使用 adodb 记录集填充列表框

VB6 populate a list box using adodb recordset

我有一个原来使用Listview 控件的窗体,但我需要将其更改为Listbox 控件。现在这是用于列表视图的原始代码。我正在尝试更改它以使用 adodb 记录集填充列表框,但不断出现错误。 lv1 是列表框 1; lv2 是列表框 2。列表框没有列表项。

Private Sub PopulateListView()
Dim cnPop As ADODB.Connection
Dim rsPop As ADODB.Recordset
Dim lst As ListItem
Dim lngRecs As Long

On Error GoTo ErrPopulate

Set cnPop = New ADODB.Connection
cnPop.CursorLocation = adUseClient
cnPop.Open gcnORA

Set rsPop = New ADODB.Recordset
rsPop.Open sSQL, cnPop, adOpenDynamic, adLockReadOnly

lv1.ListItems.Clear
Do While rsPop.EOF = False
    Set lst = lv1.ListItems.Add(, , rsPop!Customer_Number)
    lst.SubItems(1) = rsPop!Customer_Name
    rsPop.MoveNext
Loop

If rsPop.RecordCount > 0 Then
    SelectButtons True
End If

With lblCount
    .Caption = Format((rsPop.RecordCount), "#,##0") & IIf((rsPop.RecordCount) <= 1, " Customer", " Customers") & " found"
    .Refresh
End With

rsPop.Close
cnPop.Close
Set rsPop = Nothing
Set cnPop = Nothing

Exit Sub

ErrPopulate:
MsgBox Err.Description, vbCritical, "Populate Error"

End Sub

一个列表视图可以有多个列,您显然在以前的列表视图中至少有两列:客户编号和客户名称。

一个列表框只有一列。您需要决定如何将您的两列数据 display/add 添加到列表框。不要被列表框的列 属性 搞糊涂了,当设置为多列时,控件仍然只有一列数据 - 它只是水平蛇形滚动而不是垂直滚动。

正在将项目添加到列表框:

lv1.Additem rsPop!Customer_Name

列表框文档:VB6 Listbox