データベース(MDBファイル)関連:DataGridViewのデータが削除されたかどうかチェックするVB2008で表形式で表示させたMDBファイルのデータが削除されたかどうか調べる実行例サンプルです。データベース(MDBファイル)関連へ行単位でレコードが削除されたかどうか調べるには、RowState と DataRowState列挙体を使います。 RowState が DataRowState.Deleted ならば削除されています。 削除前のデータは、Row( 列名 , DataRowVersion.Original ) で取得できます。 削除前のDataGridView DataGridView上でDELETEキーを使いレコードを削除し、「削除行のチェック」ボタンをクリックした画面です。 2行目の愛知県、6行目の山梨県、7行目の愛知県、8行目の長野県が削除され、 その結果が下のテキストボックスに表示されています。 ■ 実行コード 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実践入門 |