3

我目前正在开发我的 vb6 程序,但在从两个表中显示一个列表视图时遇到问题.. 第一次尝试它运行正确,它将我的信息(如姓名、地址、年龄等)存储在分配的列上,但在第二次运行时。信息成倍增加,并放在列表视图的第一列:(这是我在列表视图表单上的代码:

Private Sub Form_Activate()
Set rs = New ADODB.Recordset
With rs
.open "Select * from tblapps , tblappsinfo", cn, 3, 3
ListView1.ListItems.Clear
Do Until rs.EOF
    ListView1.ListItems.Add = !Name
    ListView1.ListItems.Item(1).ListSubItems.Add = !address
    ListView1.ListItems.Item(1).ListSubItems.Add = !tin
    ListView1.ListItems.Item(1).ListSubItems.Add = !cel
    ListView1.ListItems.Item(1).ListSubItems.Add = !College
    ListView1.ListItems.Item(1).ListSubItems.Add = !age
    ListView1.ListItems.Item(1).ListSubItems.Add = !Status
    ListView1.ListItems.Item(1).ListSubItems.Add = !Salary_Desired
    ListView1.ListItems.Item(1).ListSubItems.Add = !Hours_can_work
    ListView1.ListItems.Item(1).ListSubItems.Add = !Available_for_work



  .MoveNext
  Loop
End With
4

1 回答 1

2

当您为后续记录添加子项时,您不会更新该项的索引,它总是将其添加到Item(1).

在您的示例中,您想要的是

ListView1.ListItems.Item(ListView1.ListItems.Count)

这样子项目总是被添加到最新的项目中。

不过要小心!如果添加时 Sorted 属性为 true,则最近的可能不是最后一个。在这种情况下,您可以将每个项目的名称添加为自己的键:

ListView1.ListItems.Add , !Name, !Name

然后通过键而不是索引来引用

ListView1.ListItems.Item(!Name)

但是,在循环之前关闭排序并在循环ListView1.Sorted = False之后重新打开它可能会更好、更容易(避免键冲突问题) ListView1.Sorted = True

于 2012-11-08T16:50:55.063 回答