我正在创建一个程序,用户可以在该程序中搜索访问数据库中的项目,结果显示在列表视图中。
当我点击搜索时,显示所有项目,但是当我在文本框中输入项目时,则不显示任何搜索。
这是我的代码
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
任何想法有什么不对? 我没有得到任何错误显示错误。 感谢
答案 0 :(得分:0)
您正在以错误的方式使用if条件和循环。 if条件检查当前记录的产品字段是否与输入的文本相同。如果是这样,循环记录并将其添加到列表视图。
您可以通过两种方式进行搜索:
一种是在sql中使用LIKE。例如,SELECT * FROM Export WHERE product LIKE 'a%'
将返回包含以" a"开头的产品字段的记录。
有关详细信息:http://www.w3schools.com/sql/sql_like.asp
另一种方法是逐个遍历所有记录并使用if条件(就像你现在一样),检查该字段是否包含搜索文本。如果您正在使用它,那么您必须对当前代码进行的更改是,在循环内移动if条件。所以,就像在while循环中一样,你将使用if条件检查匹配。