● DataTableに新規レコードを追加するサンプル

図 DataTableに新規レコードを追加するサンプル
このサンプルは、得意先テーブルをDataTableに取り込んで新規レコードを追加します。新規レコードを追加するには、DataTableのNewRow()メソッドでDataRowを生成してRo
このサンプルでは、以下のノウハウを習得することができます。
▲ 得意先テーブルをDataTableに取り込む方法
▲ DataTableに新規レコードを追加する方法
▲ DataTableのNewRow()メソッドの使い方
▲ DataTableのRo
▲ DataTableのSelect()メソッドの使い方
▲ DataTableから新規登録したレコードのみ抽出する方法
サンプルのPage_Load()イベントでは、得意先テーブルをDataTableに取り込んで新規レコードを追加しています。行8-9では、得意先テーブルのレコードを抽出するSQLを生成しています。行10-13では、OleDbConnection、OleDbDataAdapter、DataTableのインスタンスを生成しています。
行15では、OleDbDataAdapterのFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行16では、DataTableの得意先IDをオートナンバー型にしています。また、得意先IDが-1,-2,-3…のように負の数で採番されるようにしています。
行21では、DataTableのNewRow()メソッドでDataRowを生成しています。行22-23では、DataRowに得意先名と担当者名を設定しています。行24では、DataTableのRo
行34では、DataViewRo
行37-39のFor Each…NextでarrRo
7: Sub Page_Load()
8: Dim strSQL As String =
"Select CustomerID, CompanyName, " & _
9: "ContactName,
Phone From Customers"
10: Dim con As New OleDbConnection( _
11:
ConfigurationSettings.AppSettings("conStringNw"))
12: Dim da As New
OleDbDataAdapter(strSQL, con)
13: Dim dt As New
DataTable("Customers")
14:
15: da.Fill(dt)
16: Dim dc As DataColumn =
dt.Columns("CustomerID")
17: dc.AutoIncrement = True
18: dc.AutoIncrementSeed = -1
19: dc.AutoIncrementStep = -1
20:
21: Dim dr As DataRow = dt.NewRow
22: dr("CompanyName") = "フレンドリーソフト1"
23: dr("ContactName") = "葛西 千春"
24: dt.Ro
:::
34: Dim dvrs As DataViewRo
35: Dim arrRo
36:
Response.Write("<h2>DataTable.NewRow</h2>")
37: For Each dr In arrRo
38: DisplayRow(dr)
39: Next
40: End Sub
Sub DisplayRow()では、DataRowのすべてのカラム名とカラム値を表示します。行43では、DataRowのTableプロパティからDataTableを生成しています。行45-62のFor Each…Nextでは、DataTableのColumnsコレクションからDataColumnを取り出しています。行47-49は、DataRowのRo
42: Sub DisplayRow(dr As DataRow)
43: Dim dt As DataTable = dr.Table
44: Dim dc As DataColumn
45: For Each dc In dt.Columns
46: If dr.Ro
47:
Response.Write(String.Format("<b>{0}</b>: {1}
<b>{2}</b><br>", _
48:
dc.ColumnName, dr(dc.ColumnName, DataRowVersion.Current), _
49: Iif(dc.ColumnName="CompanyName","(追加)","")))
50: ElseIf dr.Ro
54: ElseIf dr.Ro
58: Else
61: End If
62: Next
63:
Response.Write("<hr>")
64: End Sub