- PR -

DataGridViewの内容をデータベースへ反映

投稿者投稿内容
chiroru
ベテラン
会議室デビュー日: 2008/10/02
投稿数: 59
投稿日時: 2008-10-03 14:29
何度も投稿申し訳ありません…
言語:Microsoft Visual Studio 2008
データベース:SQL Server 2005 非接続型のデータアクセスです。

先日、DataGridViewの内容をデータベースへ反映できない件について質問させていただきましたが
解決できていないため、再度別の方法を考え投稿させていただきました。

<質問>
DataGridViewと更新ボタンを作成し、更新ボタン押下時にDataGridViewの内容をテーブルに反映したいのですが
DataGridViewからDatasetをどうやって取り出すのかがわからずにいます。
Datasetが取り出せれば、データを1件づつ読みDataRow オブジェクトの RowStateプロパティで判断して
更新処理ができないかと考えています。

申し訳ないですがDataGridViewの更新方法がわかる方がいらっしゃいましたらご教授お願いします。

↓考えているコード
Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click
  Try
    'DB接続
    '<Datasetの呼び出し>
    DatasetのLOOP処理
      Select Case Row.RowState
        Case DataRowState.Added
          ▼新規追加されたレコードの場合 :Insert文実行
        Case DataRowState.Deleted
          ▼削除されたレコードの場合    :Update文実行
        Case DataRowState.Modified
          ▼修正されたレコードの場合    :Delete文実行
        Case Else
      End Select
    LOOP
    MessageBox.Show("更新に成功しました。")
  Catch oExcept As Exception
    '例外が発生した時の処理
  Finally
    'DB切断
  End Try
End Sub
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-10-03 14:48
参考になりませんか?
DataGridViewコントロールを操作する101の方法の「変更を保存する」
chiroru
ベテラン
会議室デビュー日: 2008/10/02
投稿数: 59
投稿日時: 2008-10-03 16:02
For Each I As DataGridViewRow In dgrview.Rows
でDatasetを読むことができたのですが、☆のところで
名前 'row' は宣言されていません。
とエラーになります。
簡単なことで申し訳ありませんが、どういうふうに宣言するのですか?

For Each I As DataGridViewRow In dgrview.Rows
  'SQL文の生成
  Select Case row.RowState←☆
    Case DataRowState.Added '追加
    Case DataRowState.Deleted '削除
    Case DataRowState.Modified '変更
    Case Else
  End Select
Next
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-10-03 16:38
質問内容を明確にするため教えてください。

引用:
簡単なことで申し訳ありませんが、どういうふうに宣言するのですか?


というのは、
  • 「宣言」という意味がわからない。
  • 「変数の宣言」をこの言語でどの様に記述すれば良いかわからない。
  • 「row」という変数の型がわからない。
  • その他。
のどれでしょうか。

あと、

引用:
For Each I As DataGridViewRow In dgrview.Rows
でDatasetを読むことができたのですが、


とありますが、 DataSet は取得できていないと思います。
DataGridView の行を1行ずつ取得出来ているだけです。
chiroru
ベテラン
会議室デビュー日: 2008/10/02
投稿数: 59
投稿日時: 2008-10-03 16:51
「変数の宣言」をこの言語でどの様に記述すれば良いかわからない。です。
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-10-03 17:06
下記のページの「変数の宣言」が回答になるでしょうか。

http://msdn.microsoft.com/ja-jp/library/9kc1d337.aspx
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-10-03 17:24
引用:

chiroruさんの書き込み (2008-10-03 16:02) より:

For Each I As DataGridViewRow In dgrview.Rows
でDatasetを読むことができたのですが、☆のところで
名前 'row' は宣言されていません。
とエラーになります。
簡単なことで申し訳ありませんが、どういうふうに宣言するのですか?

For Each I As DataGridViewRow In dgrview.Rows
  'SQL文の生成
  Select Case row.RowState←☆
    Case DataRowState.Added '追加
    Case DataRowState.Deleted '削除
    Case DataRowState.Modified '変更
    Case Else
  End Select
Next


うーん、根本的に理解されていないように見受けられますねぇ

こことか見てみては?
グリッド自体に値を入力して更新
chiroru
ベテラン
会議室デビュー日: 2008/10/02
投稿数: 59
投稿日時: 2008-10-03 17:24
引用:

とありますが、 DataSet は取得できていないと思います。
DataGridView の行を1行ずつ取得出来ているだけです。


すみません。本当に最近vbを勉強し始めたばかりでサンプルがないと
なかなか前に進めないのが現状です。
自分なりに色々調べたつもりなのですが、もう少し調べてみたいと思います。

スキルアップ/キャリアアップ(JOB@IT)