2016-08-22 10 views
1

コンボボックスに問題があります。 シンプルな選択クエリを1つ入力することができます。 ここで、whereコマンドを含むクエリをコンボボックスに入力します。私はいくつかのソリューションを試しましたが、どれも解決しませんでした。 Whereステートメントを使用してコンボボックスにクエリを入力するにはどうすればよいですか?whereコマンド(VB.NET)でクエリを使用してコンボボックスに記入

これまでの私のコードは次のとおりです。

Public Function vulComboboxTesten(box As ComboBox, naam As String) As ComboBox 
     box.Items.Clear() 
     box.Items.Add(" ") 
     Dim query As String 
     query = "Select Sector from Onderaannemers where Naam_firma = @naam " 
     Debug.WriteLine(query) 
     Dim command As OleDbCommand 
     command = New OleDbCommand(query, connectie) 

     command.Connection.Open() 

     Dim datareader As OleDbDataReader 
     datareader = command.ExecuteReader 

     While datareader.Read 
      Dim item As New ComboBoxItem 
      item.Content = datareader("Sector") 
      box.Items.Add(item) 
     End While 

     command.Connection.Close() 
     Return box 
    End Function 
+0

'OnderaannemersからSelect Sector Naam_firma = @ naam'これは問題です。クエリにパラメータを追加しましたが、クエリにパラメータを含めることはできません... – Codexer

+0

それではどうしたらいいですか? – Messiaeno

+1

次のようなものです: 'command.Parameters.Add(新しいOleDbParameter(" @ naam "、naam-yourvalue))' ***これは***コマンド '=新しいOleDbCommand(query、connectie)の後に行います。別の注意点として、データベースにアクセスするときの接続を破棄することが重要です。コマンドと接続をusingステートメントでラップして確実に廃棄することをお勧めします。 – Codexer

答えて

1

はこの先生をお試しください。あなたのコーディングのタイプに私のコードをどのように翻訳するのか分かりません。しかし、説明を読んでください。

Private Sub StoringDatainCombobox() 
    Try 
     Dim comboSource As New Dictionary(Of String, String)() 
     mkcon() 'this is just my sqlCon.Open 
     Dim cmd As New SqlCommand 
     Dim rd As SqlDataReader 

     cmd.Connection = sqlCon 
     cmd.CommandText = "data_get" 'my query stored procedure. 
     'cotains something like this select * from tb1 where isactive = true 
     cmd.CommandType = CommandType.StoredProcedure 

     comboSource.Add(0, "") ' for blank item in the 1st value of combobox 
     ComboBox1.DataSource = New BindingSource(comboSource, Nothing) 
     ComboBox1.DisplayMember = "Value" 
     ComboBox1.ValueMember = "key" 
     ComboBox1.Text = "" 

     rd = cmd.ExecuteReader 
     While (rd.Read) 
       comboSource.Add(rd("dataId"), rd("dataName")) 
       ComboBox1.DataSource = New BindingSource(comboSource, Nothing) 
       ComboBox1.DisplayMember = "Value" 
       ComboBox1.ValueMember = "key" 
       ComboBox1.Text = "" 
     End While 
     sqlCon.Close() 
    Catch ex As Exception 
     MessageBox.Show("Failed." & ex.Message, "Failed", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    End Try 
End Sub 

これで、IDの付いたクエリのデータ結果も表示できるようになりました。 ユーザーがコンボボックスでアイテムを選択したときにIDを取得する方法が必要な場合は、私に知らせてください。

希望すると、これが役立ちます。

関連する問題