comboboxにaccessのデーターを表示するには?


よっしー  2003-03-31 21:57:49  No: 77487

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

上記のようにしたんですがドロップダウンに出てきません。
どうしたら出てきますでしょうか?
お願いします。


魔界の仮面弁士  2003-03-31 23:15:10  No: 77488

>   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"


VB  2003-04-02 20:39:52  No: 77489

ありがとうございます。

試してみましたが、OleDbDataAdapterが定義されてません。とエラーが出ます。これはどう付け加えればいいんでしょうか?


魔界の仮面弁士  2003-04-02 21:57:49  No: 77490

> OleDbDataAdapterが定義されてません。

あらかじめ、System.Data.OleDb名前空間をImportしておいてください。

もしくは、
  Dim da As New System.Data.OleDb.OleDbDataAdapter(SQL, connString)
のように、名前空間を省略せずに書くようにしてもOKです。

OleDbへの参照設定も忘れずに。


魔界の仮面弁士  2003-04-02 22:07:58  No: 77491

> System.Data.OleDb名前空間をImportしておいてください。

すみません。Importではなく、Importsの間違いです。m(_ _)m


VB  2003-04-03 04:19:20  No: 77492

Dim da As New OleDbDataAdapter("SELECT * FROM M_tokuisaki", connString)

この行のdaとOleDbDataAdapterにエラーが出ます。

申し訳ないですがお願いします。


VB  2003-04-03 04:20:05  No: 77493

このエラーは、コードじゃなくてほかの設定でしょうか?


Loreley  2003-04-03 13:52:19  No: 77494

エラーメッセージは?


VB  2003-04-04 02:49:21  No: 77495

ローカル変数 'da' は現在のブロックで既に宣言されています。
型 'OleDbDataAdapter' が定義されていません。

この二つのエラーです。
お願いします。


魔界の仮面弁士  2003-04-04 04:34:30  No: 77496

> ローカル変数 'da' は現在のブロックで既に宣言されています。
文字通りの意味かと思いますよ。
daという変数名が、ブロック内で複数個宣言されていないか、
確認してみてください。

> 型 'OleDbDataAdapter' が定義されていません。
System.Data.OleDb名前空間をImportsしましょう。


VB  2003-04-09 01:46:27  No: 77497

お久しぶりです。
あれからいろいろやってみましたが結局わかりませんでした。

>System.Data.OleDb名前空間をImportsしましょう。

↑は、どうやるんですか?


魔界の仮面弁士  2003-04-09 02:18:31  No: 77498

先にも何度か書いていますが、『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)
という省略表記をしても、正しく認識されます。


VB  2003-04-09 02:56:42  No: 77499

ありがとうございます。

da.Fill(ds, "MyDataset")

のところでデバッガでエラーが出ます。
コンボボックスの表示は、出力されません。

'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。

これはどうゆうことでしょうか?


VB  2003-04-09 03:04:23  No: 77500

上記の件は解決しましたが、

コンパイルをしてもエラーは出ませんが、表示がやっぱり出てきません。

コードは、下記のとおりです。

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


VB  2003-04-15 03:48:17  No: 77501

すいません何度も投稿していますが、上記のコードで、表示されないのはなぜでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加