Saber las líneas borradas, añadidas o modificadas por un DataSet

2067 vistas

Este código permite detectar los valores de las líneas de un DataGrid que han sido modificadas, borradas o añadidas por el usuario. Se supondrá que  se ha llenado el DataGrid mediante un DataSet y un SqlDataAdatper y que la sentencia sql del DataAdapter contiene dos campos siendo de la forma:



sql
  1. SELECT Campo1, Campo2 FROM Tabla



En el evento click de un botón, podemos poner:



vbnet
  1. ' representa una línea de datos de un DataTable
  2. Dim dr As DataRow
  3. ' variable string para recuperar los resultados
  4. Dim lineaModif, lineaSupp, lineaAdd As String
  5. Dim result As String
  6.  
  7. ' recorremos cada línea del DataTable
  8. For Each dr In DataSet.Tables("DataTable").Rows
  9.   ' según el estado de la línea
  10.   Select Case dr.RowState
  11.       ' LÃnea modificada
  12.       Case DataRowState.Modified
  13.           ' dr(0) recupera el valor de la primera columna
  14.           ' DataRowVersion.Original recupera el valor antes de la modificación
  15.           lineaModif = lineaModif & dr(0, DataRowVersion.Original) & "-" & dr(1, _
  16.                     DataRowVersion.Original) & vbCrLf
  17.       ' LÃnea borrada
  18.       Case DataRowState.Deleted
  19.           lineaSupp = lineaSupp & dr(0, DataRowVersion.Original) & "-" & dr(1, _
  20.                     DataRowVersion.Original) & vbCrLf
  21.       ' LÃnea añadida
  22.       Case DataRowState.Added
  23.           linaAdd = lineaAdd & dr(0) & "-" & dr(1) & vbCrLf
  24. End Select
  25. Next
  26.  
  27. result = "línea(s) modificada(s) : " & vbCrLf & lineaModif & vbCrLf & "línea(s) _
  28.           borrada(s) : " & vbCrLf & lineaSupp & vbCrLf & "LÃnea(s) añadida(s) :" & vbCrLf & lineaAdd
  29.  
  30. MessageBox.Show(result)