DataGridViewのDataTableをSqlServerにUpdate/Insertしたい

タグの編集
投稿者 Yamato  (社会人) 投稿日時 2017/2/24 01:42:36
 (環境)
VB.Net
   SQL Server2008

いつも勉強させていただいております。
 宜しくお願いいたします。

(実現したい事)
1.SqlServerの [テーブルA]からSelectしたデータを
     DataGridView1に表示します。
  その時、生年月日と本日日付より、年次を計算して表示します。
  (年次は特別な計算方法で取得します)

2.年次を表示したDataGridView1のデータを
[テーブルA]に更新する。

もしくは

3.年次を表示したDataGridView1のデータを
[テーブルB]を新規作成しInsertする。
-------------------------------
 [テーブルA]
ID nvarchar(6)(主キー)
生年月日 nvarchar(10)
年次 nvarchar(10)  ←データは空白です。
氏名ID int
氏名 nvarchar(20)
-----------------------------------------
ID          生年月日   年次  氏名ID  氏名
-----------------------------------------
20-001   2011/01/14  Null   2          井上
20-002   2012/10/12  Null   2          井上
20-003   2011/09/20  Null   3          山田
20-004   2010/01/13  Null   6          岡田
-----------------------------------------
[DataGridView1]
-----------------------------------------
ID          生年月日   年次  氏名ID  氏名
-----------------------------------------
20-001   2011/01/14  5年次   2          井上
20-002   2012/10/12  3年次   2          井上
20-003   2009/09/12  6年次   3          山田
20-004   2010/01/13  6年次   1          岡田
-----------------------------------------
ここまで出来ています。

この後、[DataGridView1]のデータを
 [テーブルA]の「年次」をUpdateするか
 [テーブルA]と同じテーブル構造の [テーブルB]を作成しInsertするかしたいです。

ご教示のほど、宜しくお願い致します。

---------------------------
[プログラム]

SqlCon.ConnectionString = ConnectionStr & 接続文字列
SqlCon.Open()

SqlCmd = New SqlClient.SqlCommand("Select * From  [テーブルA],SqlCon)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(SqlCmd)

Dim ds As DataSet = New DataSet()

     'データセットに詰め込む
            dataadapter.Fill(ds, "v_住民")

            'DataGridViewにバインドする
            DataGridView1.DataSource = ds

            'データセット中のv_住民テーブルを表示させる
            DataGridView1.DataMember = "v_住民"

            Dim dt As DataTable = ds.Tables("v_住民")
            Dim dr As DataRow

            For Each dr In dt.Rows

                '生年月日
                If Not IsDBNull(dr("生年月日")) Then
                    strDate = dr("生年月日")
                    Get_年次計算(strDate)
                    dr("年次") = Nenji   <--ここで年次を取得
                End If
            Next

     ※ここで、DataGridView1に年次が表示されます。

<教えて頂きたい事>

     ▼この後、ds.Tables("v_住民")のデータ(DataGridView1)を
      SqlServerの [テーブルA]に対して「年次」をUpdateしたい。

          もしくは、

     ▼SqlServerに [テーブルA]と同じテーブル構造の [テーブルB]を新規作成し
      ds.Tables("v_住民")データ(DataGridView1)をInsertしたい。


    ※「年次」は本日日付より都度計算します。
      ですので [テーブルA]の「年次」は毎回Nullです。

    ※[テーブルA]もしくは[テーブルB]が実現した後は、さらに集計します。


'DBとの接続解除
If SqlCon IsNot Nothing Then SqlCon.Close()
SqlCon.Close()

      


投稿者 Yamato  (社会人) 投稿日時 2017/2/24 19:50:57
お世話になっております。

投稿させて頂いた後「DataAdapterの自動 更新」を見つけました。
サンプルに当てはめてみたところ、うまくいきましたので
質問は取り下げさせて頂きます。

随分調べたのですが調べ方が甘かったようです。
お騒がせ致しました。

今後とも宜しくお願い致します。