0

ユーザーがアクセスデータベース内のアイテムを検索し、結果をリストビューに表示できるプログラムを作成しています。

[検索]をクリックするとすべてのアイテムが表示されますが、テキストボックスにアイテムを入力すると、検索しても何も表示されません。

これは私のコードです

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

何が悪いのか考えてみませんか?何も表示されないだけでエラーは発生しません。ありがとう

4

1 に答える 1

0

if条件とループを間違った方法で使用しています。if条件は、現在のレコードの製品フィールドが入力されたテキストと同じであるかどうかを確認します。その場合は、レコードをループしてリストビューに追加します。

2つの方法で検索を行うことができます。

1つは、SQLでLIKEを使用することです。たとえば、SELECT * FROM Export WHERE product LIKE 'a%'「a」で始まる製品フィールドを持つレコードを返します。詳細については、http ://www.w3schools.com/sql/sql_like.aspをご覧ください。

もう1つの方法は、すべてのレコードを1つずつループし、if条件(現在のように)を使用して、フィールドに検索テキストが含まれているかどうかを確認することです。これを使用している場合、現在のコードに加える必要のある変更は、ループ内でif条件を移動することです。したがって、whileループ内のようになり、if条件を使用して一致をチェックします。

于 2012-07-30T03:05:08.237 に答える