• 締切済み

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

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

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 の部分が必要になります

noname#208236
質問者

補足

早々のお返事ありがとうございます。 会社が週末休みだったのでお返事遅れ申し訳ありません。 さて、回答についてですが >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

関連するQ&A