DataViewのレコードを追加、編集、削除するサンプル

DataViewのレコードを追加、編集、削除するサンプル

 

このサンプルは、DataViewに新規レコードを追加したり、すでに登録されているレコードを編集、削除します。DataViewに新規レコードを追加するには、DataViewAddNew()メソッドを使用します。レコードを編集するには、DataRowView()の引数にカラム名を指定して値を設定します。レコードを削除するには、DataRowViewDelete()メソッドを使用します。

 

このサンプルでは、以下のノウハウを習得することができます。

 

  DataTableを作成する方法

  得意先テーブルをDataTableに取り込む方法

  DataTableからDataViewを作成する方法

  DataViewに新規レコードを追加する方法

  DataViewのレコードを編集する方法

  DataViewからレコードを削除する方法

  DataViewから追加、編集、削除されたレコードを絞り込む方法

 

サンプルのPage_Load()イベントでは、DataViewに新規レコードを追加したり、編集、削除します。行8-9では、得意先テーブルからレコードを抽出するSQLを生成しています。行10-13では、OleDbConnectionOleDbDataAdapterDataTableを生成しています。

 

15では、OleDbDataAdapterFill()メソッドで得意先テーブルをDataTableに取り込んでいます。行20では、DataTableからDataViewを生成しています。

 

  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)
 20:   Dim dv As New DataView(dt)

:::
 60: End Sub

 

23-27では、DataViewに新規レコードを追加しています。行23では、DataViewAddNew()メソッドでDataRowViewを生成しています。行24-26では、DataRowViewの得意先名、担当者名、電話番号のカラムに値を設定しています。行27では、DataRowViewEndEidt()メソッドでDataRowViewの更新を完了させています。

 

29-35では、DataViewに追加したレコードを表示しています。行29では、DataViewRowStateAddedを設定しています。行30では、DataViewRowStateFilterプロパティにDataViewRowStateを設定しています。DataViewStateには、Addedが設定されていますので新規登録されたレコードが絞り込まれます。行33-35For…Nextでは、DataViewからDataRowViewを取り出してSub DisplayRow()に渡しています。DisplayRow()では、DataRowViewのすべてのカラム名とカラム値を表示します。

 

23:   Dim drv As DataRowView = dv.AddNew()
 24:   drv("CompanyName") = "
フレンドリーソフト"
 25:   drv("ContactName") = "
葛西 秋雄"
 26:   drv("Phone") = "(0480)99-9999"
 27:   drv.EndEdit()
 28:
 29:   Dim dvrs As DataViewRowState = DataViewRowState.Added
 30:   dv.RowStateFilter = dvrs
 32:   Response.Write("<h2>DataView.AddNew()</h2>")
 33:   For intRow = 0 To dv.Count - 1
 34:     DisplayRow(dv(intRow))
 35:   Next

39-40では、DataViewから1番目のレコードを取り出して得意先名を変更しています。行42-47では、DataViewから変更されたレコードを絞り込んで表示しています。行42では、DataViewRowStateModifiedCurrentを設定しています。ModifiedCurrentは、DataViewから変更されたレコードの変更後のデータを取得することを意味します。行43では、DataViewRowStateFilterプロパティにDataViewRowStateを設定して変更されたレコードを絞り込んでいます。行45-47For…Nextでは、DataViewからDataRowViewを取り出してSub DisplayRow()に渡しています。DisplayRow()では、DataRowViewのすべてのカラム名とカラム値を表示します。カラム値には、変更後の値が表示されます。

 

39:   drv = dv(0)
 40:   drv("CompanyName") &= "
"
 41:
 42:   dvrs = DataViewRowState.ModifiedCurrent
 43:   dv.RowStateFilter = dvrs
 44:   Response.Write("<h2>DataRowView.Edit()</h2>")
 45:   For intRow = 0 To dv.Count - 1
 46:     DisplayRow(dv(intRow))
 47:   Next

51-52では、DataViewから2番目のレコードを取り出して削除しています。行54-59では、DataViewから削除されたレコードを絞り込んで表示しています。行54では、DataViewRowStateDeletedを設定しています。Deletedは、DataViewから削除されたレコードを取得することを意味します。行55では、DataViewRowStateFilterプロパティにDataViewRowStateを設定して削除されたレコードを絞り込んでいます。行57-59For…Nextでは、DataViewからDataRowViewを取り出してSub DisplayRow()に渡しています。DisplayRow()では、DataRowViewのすべてのカラム名とカラム値を表示します。

 

51:   drv = dv(1)
 52:   drv.Delete()
 53:
 54:   dvrs = DataViewRowState.Deleted
 55:   dv.RowStateFilter = dvrs
 56:   Response.Write("<h2>DataRowView.Delete()</h2>")
 57:   For intRow = 0 To dv.Count - 1
 58:     DisplayRow(dv(intRow))
 59:   Next