投稿者 名無し  (社会人) 投稿日時 2014/2/5 15:40:47
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
            wOK = True
            If あいまい検索1A.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 wOK = True Then
                sql += " OR "
            Else
                sql += " WHERE "
            End If

            sql += " (生産者名 Like '"
            If あいまい検索2B.Checked Then
                sql += "%"
            End If
            sql += TextBox2.Text.Trim & "%')"

            wOK = True
        End If

        If TextBox3.Text.Length > 0 Then
            If wOK = True Then
                sql += " OR "
            Else
                sql += " WHERE "
            End If

            sql += " (Rank Like '"
            If あいまい検索3B.Checked Then
                sql += "%"
            End If
            sql += TextBox3.Text.Trim & "%')"
            wOK = True
        End If

        Dim da As New SqlDataAdapter(sql, cnstr)
        Try
            da.Fill(dt)
            DataGridView1.DataSource = dt 'DataGridview1にdtのデータを表示する
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
End Class

※本来、あいまい検索は半角や大文字などを区別しない検索方法ですが、ここではあいまい検索にチェックが付くと入力された単語さえあれば、単語の位置とか関係なくDataGridviewに表示させる方法になっています。

※RadiobtnBにはあいまい検索、Aには先頭検索となっています。

質問した時と比べて大分検索プログラムの形になりつつありますが、複数の条件を記入したとしても一番最初に来た検索条件の結果のみDatagridviewに表示されています。
仕様としては複数の条件を全てあったデータだけを取りたいのですがどうすれば良いのでしょうか?

anさん
内部的な話はプログラムを作成者目線、外交的な話はプログラムの利用者目線の意味合いとして宜しいでしょうか?
るきおさんのコードについてですが、

  Dim cnstr As String = "Data Source=DENSAN09;Initial Catalog=データベース;Integrated Security=True"
        Dim SqlBody As String
        SqlBody = "SELECT * FROM 生産者情報"
        Dim sqlWhere As New System.Text.StringBuilder


        Dim sql As String
        If TextBox1.Text = 0 Then
            sql = SqlBody
        Else
            sql = SqlBody & " WHERE " & sqlWhere.ToString()
        End If

まで作れましたが、if xxx から何を打ち込んだら良いのか分からずいます。
今は、データ検索の高速化とかは考えずに検索プログラムの作成を目標にしています