2012-07-08 23 views
0

所以這裏是我的功能..它完美除了它過濾每個單元格包含數字3像300 313 30 43但我希望它只過濾單元格只有單個數字的值3!datagridview過濾功能,它工作完美,但3也是13和334

Private Sub LinkLabel4_Click(sender As Object, e As System.EventArgs) Handles LinkLabel4.Click 

    Dim search As String 
    search = "SELECT * FROM products WHERE rank LIKE '%" & 3 & "%'" 

    Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\db.mdb" 
    Dim adapter As New OleDbDataAdapter(search, connectionString) 

    Dim dt As New DataTable("products") 
    adapter.Fill(dt) 
    DataGridView1.DataSource = dt 
End Sub 

另一件事是什麼將是2個指定的數字之間的值過濾,如4和16多虧如果rank之間

+0

但是'rank'領域是數字或字符串/文本類型的方法?從你的查詢看來,它似乎是字符串/文本,這可能是一個設計問題,而不是一個編碼問題(你可以從你得到的結果中看到) – Steve 2012-07-08 20:30:33

+0

其數字類型 – FPGA 2012-07-08 20:36:35

回答

1

是一個數字類型然後將查詢應該是因爲這樣的select語句

search = "SELECT * FROM products WHERE rank = 3" 

和在第二種情況下

search = "SELECT * FROM products WHERE rank >=4 AND rank <= 16" 

爲了使您的搜索參數化,你可以這樣寫

Sub RankFilter(ByVal rankLowValue As Integer, Optional ByVal rankHiValue As Integer = -1) 

    Dim search As String 
    if rankHiValue = -1 then 
     search = "SELECT * FROM products WHERE rank = ?" 
    else 
     search = "SELECT * FROM products WHERE rank >= ? and rank <= ?" 

    Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\db.mdb" 

    Dim adapter As New OleDbDataAdapter(search, connectionString) 
    adapters.SelectCommand.Parameters.AddWithValue("@rankLo", rankLowValue) 
    if rankHiValue <> -1 then 
     adapters.SelectCommand.Parameters.AddWithValue("@rankHi", rankHiValue) 
    end if 

    Dim dt As New DataTable("products") 
    adapter.Fill(dt) 
    DataGridView1.DataSource = dt 
end sub 
+0

非常感謝你! – FPGA 2012-07-08 23:37:01

相關問題