Satır Hatası Bilgileri

içindeki DataTabledeğerleri düzenlerken satır hatalarına yanıt vermek zorunda kalmamak için, hata bilgilerini daha sonra kullanmak üzere satıra ekleyebilirsiniz. DataRow nesnesi bu amaçla her satırda bir RowError özellik sağlar. DataRow'un RowError özelliğine veri eklemek DataRow özelliğini true olarak ayarlarHasErrors. DataRow bir DataTable'ın parçasıysa ve DataRow.HasErrors true ise, DataTable.HasErrors özelliği de doğrudur. Bu, DataTable'ın ait olduğu DataSet için de geçerlidir. Hataları test ederken HasErrors özelliğini denetledikten sonra herhangi bir satıra hata bilgilerinin eklenip eklenmediğini belirleyebilirsiniz. HasErrors true ise, aşağıdaki örnekte gösterildiği gibi yalnızca hata içeren satırları döndürmek ve incelemek için DataTable yöntemini kullanabilirsinizGetErrors.

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

Ayrıca bkz.