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

VB2008で表形式で表示させたMDBファイルに変更があったかどうかを調べる実行例サンプルです。

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



行単位でデータが編集されたかどうか調べるには、RowState と DataRowState列挙体を使います。
RowState が DataRowState.Modified ならば編集されています。

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

編集前のDataGridView
DataGridViewの使用例

DataGridViewでデータを変更し、「変更行のチェック」ボタンをクリックした画面です。
下のテキストボックスに、変更前と変更後のデータを表示しています。
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 ValNew As String

TextBox1.Text = ""
For Each Row As DataRow In ttbl.Rows
'レコードが変更されているかチェック
If Row.RowState = DataRowState.Modified Then
ValOrg = Row("Field1", DataRowVersion.Original)
ValNew = Row("Field1")
TextBox1.Text = TextBox1.Text & "変更前:" & ValOrg & "  " & "変更後:" & ValNew & vbNewLine
End If
Next

End Sub
End Class


Visual Basic 2008 Express Edition実践入門