2017-07-28 62 views
-1

我的目标是检测&写入信息,在将行更新到数据库之前哪些值已更改。比较行之间的数据表值以进行更改检测

例如,我有两个具有相同列结构的数据表:beforeEditafterEdit。在这种情况下,每个数据表只有一行。

For i As Integer = 0 To beforeEdit.Columns.Count - 1 
    If beforeEdit(0).Item(i) <> afterEdit(0).Item(i) Then 
     'storing log which column have changed 
    End If 
Next 

有没有更好的方法来完成这项任务?

在此先感谢

回答

0

你并不需要两个DataTables。每个DataRow已经保存了两份数据。 DataRowRowState属性可以告诉您它是否已更改。如果没有发生变化,将为Unchanged,否则为Modified。您可以使用这样的代码来确定DataRow中是否发生了什么变化:

Private Sub LogRecordChanges(row As DataRow) 
    If row.RowState = DataRowState.Unchanged Then 
     Console.WriteLine("No changes to row.") 
    Else 
     For Each column As DataColumn In row.Table.Columns 
      Dim currentValue = row(column, DataRowVersion.Current) 
      Dim originalValue = row(column, DataRowVersion.Original) 

      If currentValue.Equals(originalValue) Then 
       Console.WriteLine($"No changes to column '{column.ColumnName}'.") 
      Else 
       Console.WriteLine($"Column '{column.ColumnName}' changed from '{originalValue}' to '{currentValue}'.") 
      End If 
     Next 
    End If 
End Sub 
+0

感谢您的洞察力高手! – andrefadila

相关问题