在vb6中显示listview中每个子项中的记录
在我的程序中,我用LIKE语句在sql查询中使用listview的第一项,并在同一listview的子项中显示结果。listview的第1列中总共有100项,我希望在listview的子项中有记录。我为每个项目使用了复选框,并选中所有复选框以显示结果。当选中单个项并执行查询时,它在子项中显示正确的结果,但当我选中所有项并执行查询时,它在每个子项中显示相同的结果 前在vb6中显示listview中每个子项中的记录,listview,vb6,Listview,Vb6,在我的程序中,我用LIKE语句在sql查询中使用listview的第一项,并在同一listview的子项中显示结果。listview的第1列中总共有100项,我希望在listview的子项中有记录。我为每个项目使用了复选框,并选中所有复选框以显示结果。当选中单个项并执行查询时,它在子项中显示正确的结果,但当我选中所有项并执行查询时,它在每个子项中显示相同的结果 前 当我执行查询时,它会显示所有子项的相同结果。查看上面的代码,我认为您的选择是错误的。如果内存有限,则ListItems是基于0的,因
当我执行查询时,它会显示所有子项的相同结果。查看上面的代码,我认为您的选择是错误的。如果内存有限,则ListItems是基于0的,因此您需要的是listview中第一个项目的文本。尝试将select代码移动到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
这样,您将获得所查看列表项的正确信息。
当您正在更改代码时,请看一看。。。每一个,当你做这样的事情时,都值得一看
在下面的注释中,您需要将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更改为0,另一个小更改是在子项(2)中设置值的位置,这样它将连接所有项,而不仅仅将最后一个项放入记录集中。错误是什么?这与索引越界有关吗。填充列表的代码。子项(2)也应位于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