データベース(MDBファイル)関連:DataGridViewのデータが削除されたかどうかチェックする

VB2008で表形式で表示させたMDBファイルのデータが削除されたかどうか調べる実行例サンプルです。

データベース(MDBファイル)関連へ



行単位でレコードが削除されたかどうか調べるには、RowState と DataRowState列挙体を使います。
RowState が DataRowState.Deleted ならば削除されています。

削除前のデータは、Row( 列名 , DataRowVersion.Original ) で取得できます。

削除前のDataGridView
DataGridViewのフォーム

DataGridView上でDELETEキーを使いレコードを削除し、「削除行のチェック」ボタンをクリックした画面です。
2行目の愛知県、6行目の山梨県、7行目の愛知県、8行目の長野県が削除され、
その結果が下のテキストボックスに表示されています。
データを削除したDataGridView

■ 実行コード

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim CnString As String
Dim UserID As String = "Admin"
Dim Password As String = ""
Dim SQL As String
Dim sfina As String = "C:\sample1.mdb"
Dim DaAdap As OleDb.OleDbDataAdapter
Dim Tbl As New DataTable()
Dim Bds As New BindingSource

CnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sfina & ";"
CnString = CnString & "User ID=" & UserID & ";"
CnString = CnString & "Jet OLEDB:Database Password=" & Password

'全フィールドの表示
SQL = "SELECT Field1 FROM table1"

'データアダプターの作成
DaAdap = New System.Data.OleDb.OleDbDataAdapter(SQL, CnString)

'データを読む
DaAdap.Fill(Tbl)

'データグリッドに表示
Bds.DataSource = Tbl
DataGridView1.DataSource = Bds

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim tbs As BindingSource = DirectCast(DataGridView1.DataSource, BindingSource)
Dim ttbl As DataTable = DirectCast(tbs.DataSource, DataTable)
Dim ValOrg As String
Dim lrow As Long

lrow = 0
TextBox1.Text = ""
For Each Row As DataRow In ttbl.Rows
lrow += 1
'レコードが削除されているかチェック
If Row.RowState = DataRowState.Deleted Then
ValOrg = Row("Field1", DataRowVersion.Original)
TextBox1.Text = TextBox1.Text & lrow & "行目削除  削除データ:" & ValOrg & vbNewLine
End If
Next

End Sub
End Class


Visual Basic 2008 Express Edition実践入門