@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

エラー:インデックスが配列の境界外です(winアプリ)

1
投稿者投稿内容
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-01-29 15:51
VB.NETでwindowsアプリを開発中です。
フォームにテキストボックス、チェックボックス、検索ボタン、DataGridが配置してあります。
チェックONの時は全件表示、テキストに入力がある場合は検索表示しています。
今回、検索をボタン押下で件名のようなエラーが発生しました。
発生するのは、検索結果が0件の時です。0件の時のみです。
デバッグで調べてみると、メッセージボックス(★)のところで発生しました。
なので、メッセージボックスをコメントにしてみると、
今度は"Public Class Form1"(コードのトップ)のところで同じエラーがでました。
他のプロジェクトで同じコードを書いた時は正常にメッセージが表示されていたので、
原因がわかりません。一応コードをのせてみました。
どなたか力をお貸しください。お願いします。

Private Sub btn検索_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn検索.Click

If chk.Checked = True Then
'全データ検索
Me.OracleSelectCommand1.CommandText = "SELECT * FROM テーブル WHERE (列名 LIKE ARAM1)"
DA.SelectCommand.Parameters("PARAM1").Value = "%"
Else
'仕入先コードによる検索
Me.OracleSelectCommand1.CommandText = "SELECT * FROM テーブル WHERE (列名 LIKE ARAM1)"
DA.SelectCommand.Parameters("PARAM1").Value = Trim(txtA.Text)
End If

Me.DS.Clear()
Me.DA.Fill(Me.DS)

If DS.Tables("テーブル").Rows.Count = 0 Then
Call MsgBox("検索データ0件です")・・・・・★
txtA.Focus()
End If

Me.Connection.Close()

End Sub
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-01-29 15:52
すいません、顔文字ついてしまいました・・・
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-01-29 16:06
一度VisualStudioを終了して、binやobjフォルダを消して、再ビルドしてみてください。
ステップ実行すると、時々実行している部分とソースの黄色くなっている部分がずれてることがあったので。

で、
>"Public Class Form1"(コードのトップ)のところで同じエラーが・・・
というのはどのタイミングでエラーになるんでしょう。
ステップで実行していっても"Public Class Form1"は実行される部分じゃないですよね。
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-01-29 16:29
返信ありがとうございます。

>一度VisualStudioを終了して、binやobjフォルダを消して、再ビルドしてみてください。

さっそく試してみました。
これってマイドキュにあるフォルダをそのまま削除ってことでいいんですよね?
やってみたんですけど、結果は変わりませんでした。

>>"Public Class Form1"(コードのトップ)のところで同じエラーが・・・
>というのはどのタイミングでエラーになるんでしょう。
>ステップで実行していっても"Public Class Form1"は実行される部分じゃないですよ
>ね。

そうなんです。実行される部分じゃないんですけど、
End Sub までいった後に、エラーが発生して、Form1の文字が緑色になるんです。
黄色じゃなくて緑色なんですけど、これって何かあるんでしょうか?


ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-01-30 09:37
解決しました。
エラーをTry〜Catchで調べて詳しく読んだところ、
どうやらDatagridのPaintイベントのところで不具合があったようです。
検索結果0件の時にDataGrid1.CurrentRowIndexが配列の境界外になるようで。
Paintイベントをコメントにすると正常に動きましたので、
判定処理を加えることでエラーに対処できそうです。

>一郎さま
返信本当にありがとうございました!
今回は解決策とはなりませんでしたが、
何かしらアドバイス頂けるのはやっぱりうれしかったです。
1

スキルアップ/キャリアアップ(JOB@IT)