如何搜索访问数据库并在Listview VB6中显示?

问题描述:

我正在创建一个程序,其中用户可以在访问数据库中搜索项目并将结果显示在列表视图中。如何搜索访问数据库并在Listview VB6中显示?

当我点击搜索时,所有的项目都显示出来,但是当我在文本框中输入一个项目时,不显示任何内容。

这是我的代码

Private Sub cmdProdSearch_Click() 
Dim conn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Dim list_item As ListItem 
Dim itm As ListItem 

db_file = db_file & "ProductsDatabase.mdb" 
Set conn = New ADODB.Connection 
conn.ConnectionString = _ 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\VB and  Database\ProductsDatabase.mdb;Persist Security Info=False" & _ 
"Data Source=" & db_file & ";" & _ 
"Persist Security Info=False" 
conn.Open 
Set rs = conn.Execute("Select * from Export") 

ListView1.ListItems.Clear 

If InStr(1, rs!Product, txtProduct.Text, vbTextCompare) Then 
With ListView1 
.View = lvwReport 
.FullRowSelect = True 
Do While Not rs.EOF 
Set itm = .FindItem(txtProduct.Text, lvwText, , lvwPartial) 
Set list_item = .ListItems.Add(, , rs!Product) 
list_item.SubItems(1) = rs!barcode & "" 
list_item.SubItems(2) = rs!quantity & "" 
list_item.SubItems(3) = rs!Department 
rs.MoveNext 
Loop 
End With 
End If 
End Sub 

任何想法有什么不好? 我没有得到一个错误,只是没有显示。 谢谢

您正在使用if条件和循环以错误的方式。您的if条件检查当前记录的产品字段是否与输入的文本相同。如果是这样,循环记录并将其添加到列表视图。

你可以做搜索有两种方式:

一是在SQL中使用LIKE。例如,SELECT * FROM Export WHERE product LIKE 'a%'将返回产品字段以“a”开头的记录。 有关详细信息:http://www.w3schools.com/sql/sql_like.asp

花药的办法是遍历所有记录逐一使用if条件(比如你现在有),检查该字段是否包含搜索文本。如果你正在使用这个,那么你必须对你现在的代码进行修改,在if循环中移动if条件。所以,它就像在while循环中一样,你将使用if条件来检查匹配。

+0

谢谢。我刚刚摆脱了If语句,并改变了与您所建议的类似的查询。似乎现在正在工作。感谢您的帮助:) – user1532055 2012-07-30 13:57:57

+0

请接受这个答案(通过点击附近的Tick Mark)。这意味着,您已选择我的帖子作为解决方案。祝你好运 :) – 2012-07-30 15:20:10