|
分類:[.NET 全般]
初めまして。VB初心者です。 現在、コンボボックスで選択した内容をDataGridViewに表示、追加と削除ボタンを作成 追加ボタン:コンボボックスとテキストボックスの内容(Intake_TimeBox.Text, FoodComboBox.Text, Intake_calText.Text)をリストとしてDataGridViewに表示 削除ボタン:選択したリストをDataGridViewから削除 という内容にしたいのですが、 削除を行った後に追加を行うと、「削除された行を通して、その行の情報にアクセスすることはできません。」というエラーが出ます。 様々な質問サイト等で調べたのですが、どうしても書かれていた内容が理解できず、書き込みさせていただきました。
また、途中で出てくる目標カロリー、摂取カロリー(=今日の摂取カロリー)、残りカロリー、オーバーカロリーですが、 目標カロリー:DBに別テーブルで登録されている 今日の摂取カロリー:リストに表示したIntake_calText.Textの合計値 残りカロリー:目標カロリー - 今日の摂取カロリー オーバーカロリー:残りカロリーが負になった場合、絶対値を表示 という内容になっています。 今回の質問にはそこまで関与しませんが…
また、自分はC言語しか触れた事がなく、オブジェクト指向についても勉強しながら、このプログラムを組んでいました。 そのため、過去の質問等を検索しても理解できなかった、という事もあります。
以下、プログラム。必要と思われる部分のみ抜き出しました。 お手数をおかけしますが、ご教授よろしくお願いいたします。
'追加ボタン押下 Private Sub AdditionButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AdditionButton.Click
'データベースの接続 Dim oleConn As OleDb.OleDbConnection Dim oleCmd As OleDb.OleDbCommand Dim oleAdp As OleDb.OleDbDataAdapter Dim dts As DataSet oleConn = New OleDb.OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0;Data Source = ..\..\diet.mdb;")
Dim count As Integer = DataGridView1.RowCount() Dim i As Integer Dim Table_1 As DataTable = CType(DataGridView1.DataSource, DataTable) '重複チェック Dim check As Integer = 0
For i = 0 To (count - 1) If (Intake_TimeBox.Text = Table_1.Rows(i)(0)) And (FoodComboBox.Text = Table_1.Rows(i)(1)) Then check = 1 End If Next If check = 0 Then 'データセットに入力項目を追加 Dim data As DataTable = CType(DataGridView1.DataSource, DataTable) data.Rows.Add(New String() {Intake_TimeBox.Text, FoodComboBox.Text, Intake_calText.Text}) DataGridView1.Update()
'目標カロリー、摂取カロリー、残りカロリー、オーバーカロリーのセット '今日の摂取カロリーのセット Dim cal_count As Integer = DataGridView1.RowCount Dim cal_total As Integer Dim Table As DataTable = CType(DataGridView1.DataSource, DataTable) Dim j As Integer
For j = 0 To (cal_count - 1) cal_total = cal_total + Table.Rows(j)(2) '←ここでエラーが出力されます Next End Sub
'削除ボタン押下 Private Sub DeleteButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeleteButton.Click If DataGridView1.SelectedRows.Count = 1 Then Dim select_food As Integer = DataGridView1.SelectedRows(0).Index DataGridView1.Rows.RemoveAt(select_food) End If End Sub
|