看看你上面的代码,我认为你的选择在错误的地方 . 如果内存为我服务,ListItems是基于0的,所以你要求的是listview中第一项的文本 . 尝试移动if语句中的选择代码,看看是否有帮助 . 它看起来与此类似:
For I = 1 To ListView1.ListItems.Count
If ListView1.ListItems(I).Checked = True Then
ex. query= "select name from company where product LIKE '" & ListView1.ListItems(I) & "'"
List.SubItems(2) = ListView1.ListItems(I).ListSubItems.Add(, , my_Recordset1.Fields(0))
End If
Next I
这样,您将获得正在查看的列表项的正确信息 . 当你改变你的代码时,看看...每个VB6 For each,当你做这样的事情时,值得一看 .
继续下面的注释,你需要将while放在for语句中,这样你的代码看起来像这样:
For i = 0 To ListView1.ListItems.Count -1
If ListView1.ListItems(i).Checked = True Then
sSql1 = "select name from company where product LIKE '" & ListView1.ListItems(I) & "'"
my_Recordset1.Open sSql1, Conn1, adOpenDynamic, adLockOptimistic my_Recordset1.MoveFirst
While Not my_Recordset1.EOF
list.SubItems(2) = list.SubItems(2) & " " & ListView1.ListItems(i).ListSubItems.Add(, , my_Recordset1.Fields(0))
my_Recordset1.MoveNext
Wend
End If
Next
我也改变了for语句从0开始,另一个小改变就是你在SubItems(2)中设置值的地方,所以它会连接所有的项目,而不只是把最后一个项目放到记录集 .