アプリ版:「スタンプのみでお礼する」機能のリリースについて

言語:Microsoft Visual Studio 2008
データベース:SQL Server 2005 非接続型のデータアクセスです。
現在,上記環境で.netを勉強し始めたところです。
そこで簡単なプログラムからと思いDataGridViewを学習し始めたのですがすぐにつまずいてしまいました。
色々調べたのですが思うようにいかないので,アドバイスをいただければと思います。
やりたいことは
(1)フォーム1のDataGridViewコントロールにデータソースをバインドしてデータを表示する。
(2)フォーム1の更新ボタン押下時に、DataGridViewで編集した内容をデータベースに反映する。
つまづいているのは(2)です。
http://japan.internet.com/developer/20070522/26. …
を参考にしたのですが、どうコーディングすればよいかわかりません。

自作したコードは下記の通りです。

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

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

この回答への補足

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

補足日時:2008/09/29 09:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!