0

だからここに私の関数があります..300 313 30 43のような数字3を含むすべてのセルをフィルタリングすることを除いて完璧に機能しますが、1桁の3のみを持つセル値のみをフィルタリングしたい!!

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

もう1つのことは、4から16の間のように、2つの指定された数値の間の値でフィルタリングするためのselectステートメントになることです

4

1 に答える 1

1

が数値データ型の場合rank、クエリは次のようになります

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

そして2番目のケースでは

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
于 2012-07-08T20:42:52.563 に答える