データベース(MDBファイル)関連:DataGridViewのデータが変更されたかどうかチェックするVB2008で表形式で表示させたMDBファイルに変更があったかどうかを調べる実行例サンプルです。データベース(MDBファイル)関連へ行単位でデータが編集されたかどうか調べるには、RowState と DataRowState列挙体を使います。 RowState が DataRowState.Modified ならば編集されています。 編集前のデータは、Row( 列名 , DataRowVersion.Original ) で取得できます。 編集後のデータは、Row( 列名 ) で取得できます。 編集前の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実践入門 |