- 締切済み
DataGridViewで編集した内容をデータベースに反映したい
言語:Microsoft Visual Studio 2008 データベース:SQL Server 2005 非接続型のデータアクセスです。 現在,上記環境で.netを勉強し始めたところです。 そこで簡単なプログラムからと思いDataGridViewを学習し始めたのですがすぐにつまずいてしまいました。 色々調べたのですが思うようにいかないので,アドバイスをいただければと思います。 やりたいことは (1)フォーム1のDataGridViewコントロールにデータソースをバインドしてデータを表示する。 (2)フォーム1の更新ボタン押下時に、DataGridViewで編集した内容をデータベースに反映する。 つまづいているのは(2)です。 http://japan.internet.com/developer/20070522/26.html を参考にしたのですが、どうコーディングすればよいかわかりません。 自作したコードは下記の通りです。 Private Sub frmDataGridViewTest_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim strsql As String Call DBConnect() '---DB接続 strsql = "SELECT ID, 名称, 型式 FROM テーブル ORDER BY ID" Dim comm As SqlCommand = New SqlCommand(strsql, Con) Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "テーブル") dgrview.DataSource = ds dgrview.DataMember = "テーブル" Call Disconnect() '---DB切断 End Sub Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click '---ここに何か必要なのでしょうか????? このままだとdataadapterとdsに宣言がないとエラーになります。 '---DataGridViewコントロールでの変更をデータベースに戻す Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter) sqlCmdBuilder.GetUpdateCommand() dataadapter.Update(ds.Tables("テーブル")) Call Disconnect() '---DB切断 End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
DataSetとDataTableはフォームクラスの変数にしましょう アダプタは Form_Load Dim strsql As String Call DBConnect() '---DB接続 strsql = "SELECT ID, 名称, 型式 FROM テーブル ORDER BY ID" Dim comm As SqlCommand = New SqlCommand(strsql, Con) Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey の部分が必要になります
補足
早々のお返事ありがとうございます。 会社が週末休みだったのでお返事遅れ申し訳ありません。 さて、回答についてですが >DataSetとDataTableはフォームクラスの変数にしましょう >アダプタは Form_Load の意味がわからなかったのですが、frmDataGridViewTest_Loadはそのままで、BTN_更新_Clickだけ下記のようになるということでよろしかったでしょうか? Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click Dim strsql As String Call DBConnect() '---DB接続 strsql = "SELECT ID, 名称, 型式 FROM テーブル ORDER BY ID" Dim comm As SqlCommand = New SqlCommand(strsql, Con) Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey Dim ds As DataSet = New DataSet() '---DataGridViewコントロールでの変更をデータベースに戻す Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter) sqlCmdBuilder.GetUpdateCommand() dataadapter.Update(ds.Tables("テーブル")) Call Disconnect() '---DB切断 End Sub