在vb6中显示listview中每个子项中的记录

在vb6中显示listview中每个子项中的记录,listview,vb6,Listview,Vb6,在我的程序中,我用LIKE语句在sql查询中使用listview的第一项,并在同一listview的子项中显示结果。listview的第1列中总共有100项,我希望在listview的子项中有记录。我为每个项目使用了复选框,并选中所有复选框以显示结果。当选中单个项并执行查询时,它在子项中显示正确的结果,但当我选中所有项并执行查询时,它在每个子项中显示相同的结果 前 当我执行查询时,它会显示所有子项的相同结果。查看上面的代码,我认为您的选择是错误的。如果内存有限,则ListItems是基于0的,因

在我的程序中,我用LIKE语句在sql查询中使用listview的第一项,并在同一listview的子项中显示结果。listview的第1列中总共有100项,我希望在listview的子项中有记录。我为每个项目使用了复选框,并选中所有复选框以显示结果。当选中单个项并执行查询时,它在子项中显示正确的结果,但当我选中所有项并执行查询时,它在每个子项中显示相同的结果


当我执行查询时,它会显示所有子项的相同结果。

查看上面的代码,我认为您的选择是错误的。如果内存有限,则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