【问题标题】:VB6 populate a list box using adodb recordsetVB6 使用 adodb 记录集填充列表框
【发布时间】:2017-11-07 23:06:22
【问题描述】:

我有一个最初使用 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

【问题讨论】:

  • 你有没有放断点并调试它。如果是,哪个语句失败了?
  • 是的,我放了断点并调试它。
  • 当 rsPop.EOF = False 时执行设置 lst = lv1.ListItems.Add(, , rsPop!Customer_Number) lst.SubItems(1) = rsPop!Customer_Name rsPop.MoveNext
  • 您遇到的错误是什么?

标签: listbox vb6 populate


【解决方案1】:

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

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

将项目添加到列表框:

lv1.Additem rsPop!Customer_Name

列表框文档:VB6 Listbox

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    相关资源
    最近更新 更多