如何搜索访问数据库并在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条件来检查匹配。
谢谢。我刚刚摆脱了If语句,并改变了与您所建议的类似的查询。似乎现在正在工作。感谢您的帮助:) – user1532055 2012-07-30 13:57:57
请接受这个答案(通过点击附近的Tick Mark)。这意味着,您已选择我的帖子作为解决方案。祝你好运 :) – 2012-07-30 15:20:10