
開発環境
・visualstudio2012
・windows7
・.net4
・mysql
商品登録プログラムを作成しています。
仕様は、コンボボックスで選んだ商品をデータグリッドビューに追加して、登録ボタンを押下したらdbに反映させます。
コンボボックスで選べる商品はあらかじめテーブルを作成し、そこからデータを取得するようにします。
dbから商品名と値段を取得することはできたのですが、追加ボタンを押下した際にエラーがでてしまいどういう意味か理解できなかったので質問しました。
データグリッドビューに表示させるにはどうしたらいいですか??
エラー内容は「インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。」です。
Private Sub Form2_3_Load(sender As Object, e As EventArgs) Handles Me.Load 'データ取得 Dim Cn As New MySqlConnection("server=*;user id=*;persistsecurityinfo=True;database=*;password=*") Dim sqlcm As MySqlCommand = Cn.CreateCommand Dim adapter As New MySqlDataAdapter(sqlcm) Dim table As New DataTable sqlcm.CommandText = "SELECT * FROM ITEM_TBL1" adapter.Fill(table) 'コンボボックスの表示 item_box.DataSource = table item_box.DisplayMember = "ITEM_NAME" item_box.ValueMember = "ITEM_NAME" price_text.DataBindings.Add("Text", table, "ITEM_PRICE") Dim sqlstr = "SELECT * FROM ITEM_TBL1 LEFT JOIN REGISTER ON ITEM_TBL1.ITEM_ID = ITEM_TBL2.ITEM_ID" adapter = New MySqlDataAdapter(sqlstr, Cn) Dim ds As New DataSet adapter.Fill(ds) DataGridView1.AutoGenerateColumns = False DataGridView1.DataSource = ds.Tables(0) DataGridView1.Columns("Column1").DataPropertyName = "ITEM_NAME" DataGridView1.Columns("Column2").DataPropertyName = "ITEM_PRICE" DataGridView1.Columns("Column3").DataPropertyName = "COUNT" DataGridView1.Columns("Column4").DataPropertyName = "sum" End Sub '追加ボタンが押されたとき Private Sub add_btn_Click(sender As Object, e As EventArgs) Handles add_btn.Click Dim item As String = "" '商品名 Dim price As String = 0 '価格 Dim num As String = 0 '個数 Dim sum As Integer = 0 '合計 '追加ボタンが押された時の処理 item = item_box.SelectedValue price = Integer.Parse(price_text.Text) num = Integer.Parse(num_text.Text) Select Case item Case "りんご" (ここでエラー)DataGridView1.Rows(0).Cells(2).Value = (Integer.Parse(DataGridView1.Rows(0).Cells(2).Value) + num).ToString DataGridView1.Rows(0).Cells(3).Value += num * price End Select End Sub
回答1件
あなたの回答
tips
プレビュー