方法 : DataTable の行を編集する
DataTable で既存の行を編集するには、編集する DataRow を検索し、更新した値を目的の列に割り当てます。
以下の例は、型指定されたデータセットと型指定されていないデータセットの両方で、行を見つけて変更する方法を示します。
編集する行のインデックスが不明な場合の DataTable 内レコードの編集
通常、編集する行のインデックスは、不明です。 型指定されたデータセット内のデータ テーブルは、テーブルの主キーを使用して行を検索する FindBy メソッドによって作成されます。
型指定されたデータセット内の既存のレコードを更新するには (行インデックスが不明な場合)
生成された FindBy メソッドを使用して、特定の DataRow を変数に割り当て、その変数を使用して編集する列にアクセスし、新しい値を割り当てます。
次の例では、CustomerID 列が Customers テーブルの主キーであるため、生成される FindBy メソッドは FindByCustomerID です。 この例は、NorthwindDataSet という名前の型指定されたデータセットを生成済みであること、およびこの型指定されたデータセットの northwindDataSet1 という名前のインスタンスがあることを前提としています。
Dim customersRow As NorthwindDataSet.CustomersRow customersRow = NorthwindDataSet1.Customers.FindByCustomerID("ALFKI") customersRow.CompanyName = "Updated Company Name" customersRow.City = "Seattle"
NorthwindDataSet.CustomersRow customersRow = northwindDataSet1.Customers.FindByCustomerID("ALFKI"); customersRow.CompanyName = "Updated Company Name"; customersRow.City = "Seattle";;
通常、編集する行のインデックスは、不明です。 型指定されていないデータセット内のデータ テーブルは、DataRow の配列を返す Select メソッドによって作成されます。
型指定されていないデータセット内の既存のレコードを更新するには (行インデックスが不明な場合)
DataTable の Select メソッドを使用して、特定の行を検索し、必要な列に新しい値を割り当てます。
次の例では、CustomerID 列が Customers テーブルの主キーなので、Select メソッドの呼び出して主キーで検索すると、1 行だけが検出されます。 返される型は DataRow の配列なので、その配列内の (0) インデックス (1 行目) にアクセスすることになります。 この例は、dataSet1 という名前のデータセットがあることを前提としています。
Dim customerRow() As Data.DataRow customerRow = DataSet1.Tables("Customers").Select("CustomerID = 'ALFKI'") customerRow(0)("CompanyName") = "Updated Company Name" customerRow(0)("City") = "Seattle"
DataRow[] customerRow = dataSet1.Tables["Customers"].Select("CustomerID = 'ALFKI'"); customerRow[0]["CompanyName"] = "Updated Company Name"; customerRow[0]["City"] = "Seattle";
編集する行のインデックスが判明している場合の DataTable 内レコードの編集
型指定されたデータセットを使用して既存のレコードを更新するには (行インデックスが判明している場合)
DataRow オブジェクトの特定の列に値を割り当てます。
型指定されたデータセットでは、デザイン時にテーブル名および列名をプロパティとして公開する事前連結を利用します。 その結果、コードの読み書きが簡単になります。
データセットの Customers テーブルの 5 番目のレコードの CompanyName 列と City 列のデータを更新する方法を次の例に示します。 この例は、NorthwindDataSet という名前の型指定されたデータセットを生成済みであること、およびこの型指定されたデータセットの northwindDataSet1 という名前のインスタンスがあることを前提としています。
NorthwindDataSet1.Customers(4).CompanyName = "Updated Company Name" NorthwindDataSet1.Customers(4).City = "Seattle"
northwindDataSet1.Customers[4].CompanyName = "Updated Company Name"; northwindDataSet1.Customers[4].City = "Seattle";
型指定されていないデータセット内の既存のレコードを更新するには (行インデックスが判明している場合)
DataRow オブジェクトの特定の列に値を割り当てます。
型指定されていないデータセットのテーブル名および列名はデザイン時には使用できません。それぞれのインデックスをとおしてアクセスする必要があります。
dataSet1 の最初のテーブルの 5 番目のレコードの最初の 2 列のデータを更新する方法を次の例に示します。 この例は、dataSet1 の最初のテーブルが Northwind データベースの Customers テーブルに対応しており、このテーブルの最初の 2 列が CompanyName 列と City 列であることを前提としています。
DataSet1.Tables(0).Rows(4).Item(0) = "Updated Company Name" DataSet1.Tables(0).Rows(4).Item(1) = "Seattle"
dataSet1.Tables[0].Rows[4][0] = "Updated Company Name"; dataSet1.Tables[0].Rows[4][1] = "Seattle";
文字列として渡されたテーブル名および列名によってコレクションのインデックスを置き換え、前の例と同じデータを更新する方法を次の例に示します。 この場合も、編集する行のインデックスを把握する必要があります。
DataSet1.Tables("Customers").Rows(4).Item("CompanyName") = "Updated Company Name" DataSet1.Tables("Customers").Rows(4).Item("City") = "Seattle"
dataSet1.Tables["Customers"].Rows[4]["CompanyName"] = "Updated Company Name"; dataSet1.Tables["Customers"].Rows[4]["City"] = "Seattle";
参照
概念
Visual Studio でのデータへの Windows フォーム コントロールのバインド
Visual Studio でのデータへのコントロールのバインド