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.";
}