Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
複数条件のプログラムを作りたい
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=15515#CommentId38685
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
名無し
 (社会人)
投稿日時
2014/2/12 11:15:13
金曜日の発言の社会人は名前の入力ミスでした。
現在、こういったコードになっています。
Private Sub btnGo_Click(sender As System.Object, e As System.EventArgs) Handles btnGo.Click
Dim wOK As Boolean
Dim cnstr As String = "Data Source=DENSAN09;Initial Catalog=データベース;Integrated Security=True"
Dim sql As String
sql = "SELECT * "
sql += "FROM 生産者情報"
Dim dt As New DataTable
If TextBox1.Text.Length >= 0 Then
If TextBox2.Text.Length >= 0 Then
wOK = True
sql += " WHERE (生産者番号 between '%" & TextBox1.Text.Trim & "%' and '%" & TextBox2.Text.Trim & "%')"
Else
wOK = True
If RadioB.Checked Then
sql += " WHERE (生産者番号 Like '%" & TextBox1.Text.Trim & "%')"
Else
sql += " WHERE (生産者番号 Like '" & TextBox1.Text.Trim & "%')"
End If
End If
End If
If TextBox3.Text.Length > 0 Then
If wOK = True Then
sql += " AND "
Else
sql += " WHERE "
End If
sql += " (生産者名 Like '"
If RadioB.Checked Then
sql += "%"
End If
sql += TextBox3.Text.Trim & "%')"
wOK = True
End If
If TextBox4.Text.Length > 0 Then
If wOK = True Then
sql += " AND "
Else
sql += " WHERE "
End If
sql += " (Rank Like '"
If RadioB.Checked Then
sql += "%"
End If
sql += TextBox4.Text.Trim & "%')"
wOK = True
End If
Dim da As New SqlDataAdapter(sql, cnstr)
MessageBox.Show(sql)
Try
da.Fill(dt)
DataGridView1.DataSource = dt 'DataGridview1にdtのデータを表示する
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
End Class
前回のエラーについてなんですが、
If TextBox1.Text.Length > 0 And TextBox2.Text.Length > 0 Then
wOK = True
If RadioB.Checked Then
sql += " AND "
Else
sql += " WERE "
End If
を
If TextBox1.Text.Length > 0 and TextBox2.Text.Length > 0 Then
wOK = True
If RadioB.Checked Then
sql += " WHERE (生産者コード Like '%" & TextBox1.Text.Trim & "%')"
Else
sql += " WHERE (生産者コード Like '" & TextBox1.Text.Trim & "%')"
End If
に変更する事で一応出来ました。
(生産者コードの00~10には全てデータが入っていると仮定しています)
うんともすんとも言わない状況ですが、
・Textboxに入力しても検索結果では 「SELECT * FROM 生産者 WHERE (生産者番号 BETWEEN '%00%' and '%10%')と表示れますがDataGrdiviewには一つもデータが表示されません。
・試しに sql += " WHERE (生産者コード between '00' and '10')"にすると00~10の11件のデータが表示されました。
という状況になっていまして。
更に
・最初の分岐が上手く行かず、Text1,2の両方が入力していないのに「SELECT * FROM 生産者 WHERE (生産者番号 BETWEEN '%%' and '%%')」となり、他の検索条件にまで到達しない状況になっている
と、ややこしい事になっています。
最初の分岐はandでも作ってみましたが同じ結果となりました。
以下がそのコードです。
If TextBox1.Text.Length >= 0 And TextBox2.Text.Length >= 0 Then
中の sel +=は一緒の為省きます。
End If
daiveさん
サイトの紹介有難うございます。
投稿後に見ます。