PC Review


Reply
Thread Tools Rate Thread

Constraints ReadXml GetColumnsInError

 
 
Michael
Guest
Posts: n/a
 
      18th Jul 2005
Also ich versuch mal mein Problem zu schildern: Ich habe ein Dataset
und vor einiger Zeit wurde das Dataset in eine XML Datei gespeichert
(WriteXml). Nun wurde das Program erweitert und korrigiert. Dabei
wurden dem Dataset nun auch ForeignKeys (ForeignConstraints)
hinzugefügt.

Da die Daten in der Xml Datei nun aber gegen diese Constraints
verstoßen bekomme ich beim einlesen mit Hilfe von ReadXml eine
ConstraintsException. Vorrübergehend schalt ich daher die Prüfung mit
EnforceConstraints = False aus und nach dem einlesen wieder ein. Dabei
werden alle Reihen mit dem HasError Tag markiert und eine
contraintsException ausgelöst. Binde ich die Datatable an ein Datagrid
werden mir die Fehlerhaften Reihen auch angezeigt.

Nun ist es bei mehreren Tausend Datensätzen etwas umständlich alle
Fehlerhaften Datensätze mit der Hand abzuändern. Von daher möchte
ich gern die Möglichen Fehler durch Programmcode beheben (Im
Beispielcode der auskommendierte bereich)
Leider scheint beim ReadXml die ColumnError Tags nicht gefüllt zu
werden. Die Function row.GetColumnsInError() gibt 0 Zeilen zurück.

Wie bekomme ich die Column oder den Constraits der den Fehler
verursacht hat damit ich den Eintrag berichtigen oder löschen kann.

Try
speicher.EnforceConstraints = False
speicher.ReadXml(Application.StartupPath & " \Database\" &
webs.Auswahl & "\data.xml", XmlReadMode.InferSchema)
speicher.EnforceConstraints = True
Catch ex As ConstraintException
For Each tab As DataTable In speicher.Tables
If tab.HasErrors Then
Dim test() As DataRow = tab.GetErrors
For Each row As DataRow In test
If row.HasErrors Then
MsgBox(row.RowError) 'Fehler wird angezeigt
'Meldung: Für ForeignKeyContraint FKArtikelnummer müssen die
untergeordneten Schlüsselwerte (62) in der übergeordneten Tabelle
vorhanden sein.
MsgBox(row.GetColumnsInError.Length) '0 wird
zurückgegeben.
End If

'For Each col As DataColumn In cols
' Select Case tab.TableName
' Case "Artikel"
' Select Case col.Caption
' Case "KatID2"
' row("KatID2") = DBNull.Value
' row.AcceptChanges()
' Case "KatID3"
' row("KatID3") = DBNull.Value
' row.AcceptChanges()
' End Select
' Case "Bilder"
' Select Case col.Caption
' Case "Artikelnummer"
' bilddatei.Delete(row("BildID"))
' row.Delete()
' End Select
' End Select

'Next
Next
End If
Next
End Try

 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. nadeem_far@yahoo.com Microsoft ADO .NET 4 20th Mar 2007 04:04 PM
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. bazzer Microsoft ASP .NET 1 6th Apr 2006 02:31 PM
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. googler Microsoft ADO .NET 1 17th Feb 2006 08:48 PM
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. Brett Johnson Microsoft ADO .NET 0 8th Mar 2004 02:17 PM
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. Luther Miller Microsoft ADO .NET 2 3rd Oct 2003 09:57 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 10:47 AM.