コンボボックスで データバインドすると、初回例外が起きてしまう への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 刈谷勇  (社会人) 投稿日時 2009/10/15 18:30:06
ピアさん、先日は間違った情報を流してしまい申し訳ありませんでした。

提示されたコードは、問題ないと思います。
(多分、VBで自動で作成されたコードですよね)

以下の2点を確認していただければと思います。
1)新規のプロジェクトでフォームにコンボボックスのみを作成して、バインディングしてみる
2)別のテーブルをバインディングしてみる


1でエラーがでない場合は、現在のコード側に問題があると思います。
2でエラーがでない場合は、データを確認してみると何かわかるかもしれません。
両方ともだめな場合は、環境や取得方法に問題があるのかもしれません。


投稿者 刈谷勇  (社会人) 投稿日時 2009/10/15 03:14:30
ピアさん、すみません間違った回答をしていました。

>System.ArgumentOutOfRangeExceptionは配列等の範囲外を参照しようとしたときに出ますので、
>Accessから想定している件数がちゃんと取得できているか、配列を参照する場所は正しいかを確認して>みてください。

配列の参照外は、IndexOutOfRangeExceptionでした。

ヘルプより、
ArgumentOutOfRangeException は、メソッドの呼び出し時に渡された引数の少なくとも 1 つが nullNothingnullptrnull オブジェクト参照 (Visual Basic では Nothing) でなく、有効な値も含まれていない場合にスローされます。

でした。
投稿者 ピア  (社会人) 投稿日時 2009/10/15 02:23:49
返信ありがとうございます。
バージョン >> VB2008

実際、コンボボックスコントロールの特別なコードは書いてなく、フォーム内のコンボボックスから直接データバインドを設定している状態です。

==== コンボボックスのデータバインド状況 ====

データソース:CustomerBindingSource
メンバの表示:顧客名
値メンバ  :ID
選択された値:なし

です


 Private Sub CustomerForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        

    CustomerComboBox.DropDownStyle = ComboBoxStyle.DropDownList 
        Me.CustomerTableAdapter.Fill(Me.データセット名.Customer) ←←ここで初回例外

End Sub

例外が起こっても、データ件数は問題なくボックス内に配置されており、機能も問題なく使えています。
投稿者 刈谷勇  (社会人) 投稿日時 2009/10/15 01:20:11
こんにちは、ピアさん。

回答ではないのですが、以下の点を教えてください。
・VBのバージョン
・現象が再現するコード

今ある情報からの推測という形ですが、
System.ArgumentOutOfRangeExceptionは配列等の範囲外を参照しようとしたときに出ますので、Accessから想定している件数がちゃんと取得できているか、配列を参照する場所は正しいかを確認してみてください。

投稿者 ピア  (社会人) 投稿日時 2009/10/15 00:56:35
こんにちは、悩んだ時は掲示板でいつも参考にさせていただいています。

現在顧客管理系のプログラムを作成中なのです。その際、コンボボックスでの表示は顧客の名前で,
Selected.Valueでは顧客IDを必要とするので、Access2000のデータテーブルを使用し、コンボボックスでデータバインドさせています。

しかしそのコンボボックスがあるフォームのロード中にTableAdapterの使用のせいで、System.ArgumentOutOfRangeException' の初回例外が起きてしまいます。

コンボボックスにTableAdapterを使用せず、データバインドできる方法はあるのでしょうか?又、System.ArgumentOutOfRangeExceptionの例外を修正する方法はあるのでしょうか?

そして、この例外がもたらすソフト完成後の影響はどんなことなのでしょうか?