Zeilenfehlerinformationen

Aktualisiert: November 2007

Um nicht jedes Mal auf einen Zeilenfehler reagieren zu müssen, während Sie Werte in einer DataTable bearbeiten, können Sie der Zeile die Fehlerinformationen zur späteren Verwendung der Zeile hinzufügen. Das DataRow-Objekt stellt zu diesem Zweck für jede Zeile eine RowError-Eigenschaft bereit. Wenn der RowError-Eigenschaft eines DataRow-Sets Daten hinzugefügt werden, wird die HasErrors-Eigenschaft der DataRow auf true festgelegt. Wenn die DataRow Teil einer DataTable ist, und DataRow.HasErrors den Wert true aufweist, wird für die DataTable.HasErrors-Eigenschaft ebenfalls der Wert true festgelegt. Dies gilt auch für das DataSet, zu dem die DataTable gehört. Bei einer Fehlerprüfung können Sie mithilfe der HasErrors-Eigenschaft ermitteln, ob einer Zeile Fehlerinformationen hinzugefügt wurden. Wenn HasErrors den Wert true aufweist, können Sie mit der GetErrors-Methode der DataTable nur Zeilen mit Fehlern abrufen und überprüfen. Dies wird im folgenden Beispiel veranschaulicht.

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

Siehe auch

Referenz

DataColumnCollection

DataRow

DataTable

Weitere Ressourcen

Bearbeiten von Daten in einer DataTable