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()
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()
投稿させて頂いた後「DataAdapterの自動 更新」を見つけました。
サンプルに当てはめてみたところ、うまくいきましたので
質問は取り下げさせて頂きます。
随分調べたのですが調べ方が甘かったようです。
お騒がせ致しました。
今後とも宜しくお願い致します。