投稿者 名無し  (社会人) 投稿日時 2014/1/30 09:28:14
初めて質問させていただきます。
宜しくお願いします。

今、vb2010でユーザーがTextboxに入力した条件を元にDataGridviewに検索結果を出すプログラムを作っていますが、検索結果をDataGridviewに出現させる処で躓いています。
上司からヒントとかを貰い、投稿者の私はプログラム自体が初めてな所もあるので基本的なミスがあるかもしれませんが返事を貰えると幸いです。

Imports System.Data.SqlClient

Public Class 生産者検索

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=user;Initial Catalog=データベース;Integrated Security=True"
        Dim sql As String
        sql = "SELECT * "
        sql += "FROM 生産者情報"
        Dim dt As New DataTable
        Dim da As New SqlDataAdapter(sql, cnstr)
        If TextBox1.Text.Length > 0 Then
            wOK = True
            If radio1B.Checked Then
                sql += " where (生産者番号 Like '%" & TextBox1.Text.Trim & "%')"
            Else
                sql += " WHERE (生産者番号 Like '" & TextBox1.Text.Trim & "%')"
            End If
        End If

        If TextBox2.Text.Length > 0 Then
            If radio2B.Checked Then
                If wOK = True Then
                    sql += " OR (生産者名 Like '%" & TextBox2.Text.Trim & "%')"
                Else
                    sql += " WHERE (生産者名 Like '%" & TextBox2.Text.Trim & "&')"
                End If
            Else
                If wOK = True Then
                    sql += " or (生産者名 Like '%" & TextBox2.Text.Trim & "%')"
                Else
                    sql += " WHERE (生産者名 LIke '" & TextBox2.Text.Trim & "&')"
                End If
            End If
            wOK = True
        End If

        If TextBox3.Text.Length > 0 Then
            If razio3B.Checked Then
                If wOK = True Then
                    sql += " OR (Rank Like '%" & TextBox3.Text.Trim & "%')"
                Else
                    sql += " WHERE (Rank Like '%" & TextBox3.Text.Trim & "&')"
                End If
            Else
                If wOK = True Then
                    sql += " OR (Rank Like '%" & TextBox3.Text.Trim & "%')"
                Else
                    sql += " WHERE (Rank LIke '" & TextBox3.Text.Trim & "&')"
                End If
            End If
        End If
        Try
            da.Fill(dt)
            DataGridView1.DataSource = dt 'DataGridview1にdtのデータを表示する
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
End Class


・wOKはRadiobtnが一つだけ選択されているかの確認
・Radio1B,2B,3Bはあいまい検索にするか、先頭検索にするかの選択です