[ad_1]
やあ、
現在、多くのコンボボックスでデータをフィルタリングするために IF ELSE メソッドを使用しています。
私がしたことは次のようなものです:
VB
IF cboName.text = "" AND cboAge.text = "" THEN select name,age from tbUser ELSEIF cboName.text <> "" AND cboAge.text = "" THEN select name,age from tbUser WHERE name = '" & cboName.text & "' ELSEIF cboName.text = "" AND cboAge.text <> "" THEN select name,age from tbUser WHERE age = '" & cboAge.text & "' ELSEIF cboName.text <> "" AND cboAge.text <> "" THEN select name,age from tbUser WHERE name = '" & cboName.text & "' AND age = '" & cboAge.text & "' END IF
コンボボックスが10個ある場合、このプロセスを実行するためだけに何百行もあるでしょう。
このプロセスを効果的に行うための提案はありますか?
ありがとうございました。
私が試したこと:
IF cboName.text = "" AND cboAge.text = "" THEN select name,age from tbUser ELSEIF cboName.text <> "" AND cboAge.text = "" THEN select name,age from tbUser WHERE name = '" & cboName.text & "' ELSEIF cboName.text = "" AND cboAge.text <> "" THEN select name,age from tbUser WHERE age = '" & cboAge.text & "' ELSEIF cboName.text <> "" AND cboAge.text <> "" THEN select name,age from tbUser WHERE name = '" & cboName.text & "' AND age = '" & cboAge.text & "'
解決策 1
クエリを作成しているため、ユーザーが利用できるすべての選択肢を確認する必要があります。
できることは、クエリを作成することです。
の Select
は常に同じです:
VB
Dim QueryString = new StringBuilder() Dim WhereBuilder = new List(Of String)() QueryString.Append("select name, age from tbUser")
次に、各テストを実行します。
VB
If Not String.IsNullOrWhitespace(cboName.Text) Then WhereBuilder.Add("name = '" + cboName.Text + "'") End If If Not String.IsNullOrWhitespace(cboAge.Text) Then WhereBuilder.Add("age = '" + cboAge.Text + "'") End If
これで、クエリを作成する準備が整いました。
VB
If WhereBuilder.Count > 0 Then QueryString.Append(" where ") QueryString.Append(String.Join(" and ", WhereBuilder) End If dim query = QueryString.ToString()
注:コードはテストされていない回答に記述されているため、クリーンアップが必要になる場合があります。
[ad_2]
コメント