Delen via


Informatie over rijfouten

Om te voorkomen dat u tijdens het bewerken van waarden in een DataTablerij op rijfouten moet reageren, kunt u de foutinformatie toevoegen aan de rij voor later gebruik. Voor DataRow dit doel biedt het object een RowError eigenschap voor elke rij. Als u gegevens toevoegt aan de eigenschap RowError van een DataRow, wordt de HasErrors eigenschap van de DataRow ingesteld op true. Als datarow deel uitmaakt van een gegevenstabel en DataRow.HasErrors waar is, is de eigenschap DataTable.HasErrors ook waar. Dit geldt ook voor de DataSet waartoe de Gegevenstabel behoort. Bij het testen op fouten kunt u de eigenschap HasErrors controleren om te bepalen of er foutgegevens zijn toegevoegd aan rijen. Als HasErrors waar is, kunt u de GetErrors methode van de Gegevenstabel gebruiken om alleen de rijen met fouten te retourneren en te onderzoeken, zoals wordt weergegeven in het volgende voorbeeld.

Dim workTable As DataTable = New DataTable("Customers")  
workTable.Columns.Add("CustID", Type.GetType("System.Int32"))  
workTable.Columns.Add("Total", Type.GetType("System.Double"))  
  
AddHandler workTable.RowChanged, New DataRowChangeEventHandler(AddressOf OnRowChanged)  
  
Dim i  As Int32  
  
For i  = 0 To 10  
  workTable.Rows.Add(New Object() {i , i *100})  
Next  
  
If workTable.HasErrors Then  
  Console.WriteLine("Errors in Table " & workTable.TableName)  
  
  Dim myRow As DataRow  
  
  For Each myRow In workTable.GetErrors()  
    Console.WriteLine("CustID = " & myRow("CustID").ToString())  
    Console.WriteLine(" Error = " & myRow.RowError & vbCrLf)  
  Next  
End If  
  
Private Shared Sub OnRowChanged( _  
    sender As Object, args As DataRowChangeEventArgs)  
  ' Check for zero values.  
  If CDbl(args.Row("Total")) = 0 Then args.Row.RowError = _  
      "Total cannot be 0."  
End Sub  
DataTable  workTable = new DataTable("Customers");  
workTable.Columns.Add("CustID", typeof(Int32));  
workTable.Columns.Add("Total", typeof(Double));  
  
workTable.RowChanged += new DataRowChangeEventHandler(OnRowChanged);  
  
for (int i = 0; i < 10; i++)  
  workTable.Rows.Add(new Object[] {i, i*100});  
  
if (workTable.HasErrors)  
{  
  Console.WriteLine("Errors in Table " + workTable.TableName);  
  
  foreach (DataRow myRow in workTable.GetErrors())  
  {  
    Console.WriteLine("CustID = " + myRow["CustID"]);  
    Console.WriteLine(" Error = " + myRow.RowError + "\n");  
  }  
}  
  
protected static void OnRowChanged(  
    Object sender, DataRowChangeEventArgs args)  
{  
  // Check for zero values.  
  if (args.Row["Total"].Equals(0D))  
    args.Row.RowError = "Total cannot be 0.";  
}  

Zie ook