Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\hayashi\デスクトップ\林.mdb"
Dim myConnection As OleDbConnection = New OleDbConnection()
myConnection.ConnectionString = connString
Dim da As OleDbDataAdapter = New OleDbDataAdapter("Select * from M_tokuisaki", myConnection)
Dim ds As DataSet = New DataSet()
da.Fill(ds, "tokuisakiMN")
Dim dv As DataView = ds.Tables("M_tokuisaki").DefaultView
ComboBox1.DataSource = dv
ComboBox1.DisplayMember = "tokuisakiMN"
End Sub
上記のようにしたんですがドロップダウンに出てきません。
どうしたら出てきますでしょうか?
お願いします。
> Handles ComboBox1.SelectedIndexChanged
ComboBox1のSelectedIndexChangedイベント中で、
ComboBox1自身のDataSourceを差し替えるのではなく、
他のイベントにて処理した場合は、どうなりますか?
とりあえず手元の環境では、Button1 の Clickイベント中に
以下のコードを書いてみたところ、問題なく表示されました。
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb"
Dim da As New OleDbDataAdapter("SELECT * FROM STAFFLIST", connString)
Dim ds As New DataSet()
da.Fill(ds, "MyDataset")
ComboBox1.DataSource = ds.Tables("MyDataset").DefaultView
ComboBox1.ValueMember = "STAFF_CD"
ComboBox1.DisplayMember = "STAFF_NAME"
ありがとうございます。
試してみましたが、OleDbDataAdapterが定義されてません。とエラーが出ます。これはどう付け加えればいいんでしょうか?
> OleDbDataAdapterが定義されてません。
あらかじめ、System.Data.OleDb名前空間をImportしておいてください。
もしくは、
Dim da As New System.Data.OleDb.OleDbDataAdapter(SQL, connString)
のように、名前空間を省略せずに書くようにしてもOKです。
OleDbへの参照設定も忘れずに。
> System.Data.OleDb名前空間をImportしておいてください。
すみません。Importではなく、Importsの間違いです。m(_ _)m
Dim da As New OleDbDataAdapter("SELECT * FROM M_tokuisaki", connString)
この行のdaとOleDbDataAdapterにエラーが出ます。
申し訳ないですがお願いします。
このエラーは、コードじゃなくてほかの設定でしょうか?
エラーメッセージは?
ローカル変数 'da' は現在のブロックで既に宣言されています。
型 'OleDbDataAdapter' が定義されていません。
この二つのエラーです。
お願いします。
> ローカル変数 'da' は現在のブロックで既に宣言されています。
文字通りの意味かと思いますよ。
daという変数名が、ブロック内で複数個宣言されていないか、
確認してみてください。
> 型 'OleDbDataAdapter' が定義されていません。
System.Data.OleDb名前空間をImportsしましょう。
お久しぶりです。
あれからいろいろやってみましたが結局わかりませんでした。
>System.Data.OleDb名前空間をImportsしましょう。
↑は、どうやるんですか?
先にも何度か書いていますが、『OleDbDataAdapterが定義されてません』という
エラーが出ないようにするには、2つの方法があります。
----
1つは、名前空間を省略せずに記述する方法です
この方法の場合は、
> Dim da As New OleDbDataAdapter("SELECT * FROM M_tokuisaki", connString)
と書いていた宣言を、
Dim da As New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM M_tokuisaki"SQL, connString)
のように書くようにします。
----
もう一つは、「System.Data.OleDb」名前空間を「Imports」する方法です。
この場合は、コードの先頭に、
Imports System.Data.OleDb
という宣言をしておけばOKです。
Importsしておけば、先のコードのように
Dim da As New OleDbDataAdapter("SELECT * FROM M_tokuisaki", connString)
という省略表記をしても、正しく認識されます。
ありがとうございます。
da.Fill(ds, "MyDataset")
のところでデバッガでエラーが出ます。
コンボボックスの表示は、出力されません。
'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。
これはどうゆうことでしょうか?
上記の件は解決しましたが、
コンパイルをしてもエラーは出ませんが、表示がやっぱり出てきません。
コードは、下記のとおりです。
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\デスクトップ\林.mdb"
Dim da As New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM M_tokuisaki", connString)
Dim ds As New DataSet()
da.Fill(ds, "M_tokuisaki")
ComboBox1.DataSource = ds.Tables("M_tokuisaki").DefaultView
ComboBox1.ValueMember = "tokuisakiCD"
ComboBox1.DisplayMember = "tokuisakiMN"
End Sub
すいません何度も投稿していますが、上記のコードで、表示されないのはなぜでしょうか?
ツイート | ![]() |