- 題名: データセットからの削除、追加
- 日時: 2003/11/01 18:24:43
- ID: 1272
- この記事の返信元:
- (なし)
- この記事への返信:
- [1280] Re[1]: データセットからの削除、追加2003/11/02 16:17:31
- ツリーを表示
fukuです。説明するのが大変ですのでサンプルを作ってみました。 DataSetの「m_MyDataSet」は、メンバー変数で中身は「テストテーブル」 というテーブル(DataTable)が設定してあります。 Private Sub 行の削除(ByVal pi_intRowNumber As Integer) Dim myDataTable As DataTable Dim myDataRowCollection As DataRowCollection Dim myDataRow As DataRow 'DataSetにはテーブルが入っているとします myDataTable = m_MyDataSet.Tables("テストテーブル") 'テーブルの行全てを取得 myDataRowCollection = myDataTable.Rows '対象の行を取得 インデックスは0から myDataRow = myDataRowCollection.Item(pi_intRowNumber) '注 行のRowState が Added の場合は、行がテーブルから削除されます。 myDataRow.Delete() 'これでもいけます 'myDataTable.Rows(pi_intRowNumber).Delete() myDataRow = Nothing myDataRowCollection = Nothing myDataTable = Nothing End Sub Private Sub 行の追加() Dim myDataTable As DataTable Dim myDataRow As DataRow myDataTable = m_MyDataSet.Tables("テストテーブル") 'DataRowオブジェクトを生成 'テーブルオブジェクトのNewRowを使うことによりフィールドも定義されます myDataRow = myDataTable.NewRow '列に値を追加 myDataRow.Item(0) = Me.TextBox1.Text myDataRow.Item(1) = Me.TextBox2.Text 'テーブルに行を追加 myDataTable.Rows.Add(myDataRow) myDataRow = Nothing myDataTable = Nothing End Sub Private Sub 行のステータスを確認() Dim myDataTable As DataTable Dim strState As String Dim intRowCount As Integer myDataTable = m_MyDataSet.Tables("テストテーブル") For intRowCount = 0 To myDataTable.Rows.Count - 1 Step 1 If myDataTable.Rows(intRowCount).RowState = DataRowState.Added Then strState = "行が DataRowCollection に追加されましたが、 AcceptChanges が呼び出されていません。" ElseIf myDataTable.Rows(intRowCount).RowState = DataRowState.Deleted Then strState = "DataRow の Delete メソッドを使用して行が削除されました。" ElseIf myDataTable.Rows(intRowCount).RowState = DataRowState.Detached Then strState = "行が作成されましたが、どの DataRowCollection にも追加されていません。 DataRow は、作成された直後からコレクションに追加されるまでの間、またはコレクションから削除された場合に、この状態になります。" ElseIf myDataTable.Rows(intRowCount).RowState = DataRowState.Modified Then strState = "行が変更されましたが、 AcceptChanges が呼び出されていません。" ElseIf myDataTable.Rows(intRowCount).RowState = DataRowState.Unchanged Then strState = "前回 AcceptChanges が呼び出されて以降、この行は変更されていません。" End If Debug.WriteLine(intRowCount.ToString & ":" & strState) Next intRowCount End Sub 以上です。
いつもお世話になります。基本的なことで申し訳ないのですが...。
データセット内のデータを削除するにはどうしたらよいのでしょうか?
(特定のDataRow を DataRowState.Deleted にするにはどうしたらよいのかという質問です。)
また、同様に、データセットにデータを追加するにはどうしたらよいのでしょうか?
(例えば、3つのテキストボックス TextBox1, TextBox2, TextBox3 に入っている値が、
フォーム上のボタンを押すと DataSet の新しい行に追加され、
その行の DataRow State が DataRowState.Added ようにするには、
ボタンにどういったコマンドを書けば良いのか、という質問です。)
上記に関しては、単純に dataRowMain.Delete() と書いてみる等
いろいろしてみたのですが、上手く書けたようでも、
実行時にエラー表示されるなどし、うまくいきませんでした。
DataRowState.Added に至っては見当もつきません。
大変恐縮ですが、どなたか、よろしくお願いいたします。