2016-07-01 11 views
1

私はリストボックス&複数のフィルタをcheckboxListとして持っています。すべて正常に動作しますが、Like節は正しく動作しません。それはmySQLとVB.Netで同様のクエリを構造化

select * from products where category Like '% Apparels, Bluetooth%' 

以下のようなものです。しかし、それは私がきちんと私のクエリを構築するために私のコードを変更するにはどうすればよいこの

select * from products where category Like '% Apparels%' or category Like '%Bluetooth%' 

ようにすべきですか?ですから、あなたがここに何ができるかcategoryFilter.ItemsをループでcategoryCondition="Apparels, Bluetooth"を取得している

Public Function buildWhereClause() As String 
     Dim constr As String = ConfigurationManager.ConnectionStrings("conio").ConnectionString 
     Dim query As String = "select * from products" 
     Dim joiner As String = " " 
    Dim condition As String = String.Empty 
    Dim priceCondition As String = String.Empty 

    For i = 0 To priceFilter.Items.Count - 1 
     If priceFilter.Items(i).Selected Then 
      Dim price As String = priceFilter.Items(i).ToString 
      priceCondition = String.Concat(priceCondition, joiner, String.Format("'{0}'", price)) 
      If joiner = " " Then joiner = ", " 
     End If 
    Next 

    Dim categoryCondition As String = String.Empty 
    joiner = " " 

    For i = 0 To categoryFilter.Items.Count - 1 
     If categoryFilter.Items(i).Selected Then 
      Dim category As String = categoryFilter.Items(i).ToString 
      categoryCondition = String.Concat(categoryCondition, joiner, String.Format("{0}", category)) 
      If joiner = " " Then joiner = ", " 
     End If 
    Next 

    Dim whereClause As String = String.Empty 
    joiner = " where " 
    If Not String.IsNullOrEmpty(priceCondition) Then 
     whereClause = String.Concat(whereClause, joiner, String.Format(" price_range IN ({0})", priceCondition)) ' and sub_category IN ({0})", condition.Substring(0, condition.Length - 1)) 
     joiner = " and " 
    End If 

    If Not String.IsNullOrEmpty(categoryCondition) Then 
     whereClause = String.Concat(whereClause, joiner, String.Format(" category Like '%{0}%'", categoryCondition)) 
     joiner = " and " 
    End If 

    'If Not String.IsNullOrEmpty(brandCondition) Then 
    ' whereClause = String.Concat(whereClause, joiner, String.Format(" sub_category in ({0})", categoryCondition)) 
    ' joiner = " and " 
    'End If 

    Dim masterClause As String = String.Empty 
    masterClause = (query & whereClause) 
End Sub 
+0

現在、あなたが直面している難しさは何ですか?あなたが得ている最終的な質問は何ですか? –

+0

@ un-lucky私の投稿の最初に見てください私が言及した最初の質問は、私が自分のコードで得ているものです。 2番目のクエリは私が実際に望むものです。自分のコードで2番目のクエリを構築する手助けはできますか? – SUN

+0

あなたは私の質問に答えません。あなたが現在のコードで直面している難問は何ですか?あなたが 'query'のために得ている現在の値は何ですか? –

答えて

1

%' or category Like '%,はその後、すべてのものがクールになることに置き換えています。以下を考慮してください:

If Not String.IsNullOrEmpty(categoryCondition) Then 
    whereClause = String.Concat(whereClause, joiner, String.Format("category Like '%{0}%'", categoryCondition.Replace(",","%' or category Like '%"))  
End If 
+0

ありがとうございました。あなたは私の人生を救いました:) – SUN

+0

@SUN:Coolあなたを助けてくれる –

関連する問題