windowsフォームで商品登録プロクラムを作成しています。
やっていること
・DBと接続してデータグリットビューに表示
・日付検索で商品を抽出して表示
やりたいこと
・検索条件に「注文番号」「商品名」「小計」を追加して複数条件での検索ができるようにしたい
できていること
・検索項目全部を入力すればちゃんと検索できる
できないこと
・条件を全部ではなく2個とかに絞って検索ができない
下のソースを見ればわかるのですが、日付を入力しないで、例えば注文番号と商品名だけを入力したらWHERE句がなくなってしまいSQL文がおかしくなってしまいます。
かといって全てにWHEREと書いてしまったら連結した時にSQL文がおかしくなってしまいます。
上手く検索できるようにSQL文を作りたいのですがわかりませんでした。
お願いします。
Dim sqlselect As String = "" _ + "SELECT NUMBER,USER_ID,T_ITEM.ITEM_ID,ITEM_NAME,ITEM_PRICE,COUNT,ITEM_PRICE * COUNT AS sum" _ + " FROM M_ITEM JOIN T_ITEM ON M_ITEM.ITEM_ID = T_ITEM.ITEM_ID" Dim sqlwhere As String = "" Dim sqloreder As String = "AND USER_ID = '" & LoginForm1.userid & "' ORDER BY NUMBER" '日付 If DateTimePicker1.Text = "" And DateTimePicker2.Text = "" Then Else sqlwhere += "" _ + " WHERE registTIME BETWEEN '" & DateTimePicker1.Text & "' AND '" & DateTimePicker2.Text & "'" End If '注文番号 If itemnumber_text1.Text = "" And itemnumber_text2.Text = "" Then Else sqlwhere += " AND " _ + " NUMBER BETWEEN '" & itemnumber_text1.Text & "' AND '" & itemnumber_text2.Text & "'" End If '商品名 If itemName_text1.Text = "" Then Else sqlwhere += " AND " _ + " ITEM_NAME = '" & itemName_text1.Text & "'" End If '小計 If sum_text1.Text = "" And sum_text2.Text = "" Then Else sqlwhere += " AND " _ + " ITEM_PRICE * COUNT BETWEEN '" & sum_text1.Text & "' AND '" & sum_text2.Text & "'" End If Dim sql As String = sqlselect + sqlwhere + sqloreder adapter = New MySqlDataAdapter(sql, cn) Dim data As New DataSet adapter.Fill(data) DataGridView1.DataSource = data.Tables(0) End If
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/12 15:46
2017/08/17 05:35
2017/08/17 13:32