vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Fehler in Dataset suchen 
Autor: Bazi
Datum: 05.07.22 13:08

Hallo,
ich erhalte eine Fehlermeldung bei
Me.EnforceConstraints = True
im DataSet.
Einschränkungen konnten nicht aktiviert werden. Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique or foreign-key verletzen

Wie suche ich den oder die Datensätze?
Gibt es da etwas fertiges im DataSet, oder muss ich das selbst über alle Tables und Datensätze programmieren?

Danke für die Hilfe

Gruß Christian

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fehler in Dataset suchen 
Autor: Bazi
Datum: 06.07.22 15:40

Habe es nun so gelöst:
 ''' <summary>
    ''' wird beim Einlesen des DataFile aufgerufen wenn ein Fehler ausgelöst 
    ' wird.
    ''' </summary>
    ''' <param name="dts">optional ein DataSet, falls leer dann Me</param>
    ''' <returns>String (Fehlermeldung)</returns>
    Friend Function CheckDataSet(Optional ByVal dts As DataSet = Nothing) As _
      Integer
        If dts Is Nothing Then dts = Me
        Dim Meldung As String = String.Empty
        Dim Funde As Integer = 0
        For Each dt As DataTable In dts.Tables
            For Each dr As DataRow In dt.Rows
                If dr.HasErrors Then
                    Funde += 1
                    Dim cls = dr.GetColumnsInError
                    Dim errs As New List(Of String)
                    For Each c In cls
                        errs.Add(String.Concat(" Spalte " & c.ColumnName & "" & _
                          "Fehler: " & dr.GetColumnError(c.Ordinal)))
                    Next
                    Meldung += "Fehlerhafte DataRow in Tabelle " & dt.TableName _
                      & " bei Zeile " & dr(0).ToString ' davon ausgehend dass 
                    ' der Primärschlüssel oder ID in der 1.Spalte steht.
                    If Not errs Is Nothing AndAlso errs.Count > 0 Then
                        Meldung += Environment.NewLine
                        For Each E In errs
                            Meldung += E & Environment.NewLine
                        Next
                    End If
                    Meldung += Environment.NewLine & _
                      "-------------------------------------------------" & _
                      Environment.NewLine
                End If
            Next
        Next
        If Funde > 0 Then Clipboard.SetText(Meldung) : InfoBox(Funde & _
          "Fehler ermittelt" & Environment.NewLine & "Die Fehlermeldung(en)" & _
          "wurden in die Zwischenablage kopiert", True, 3000)
        Return Funde
    End Function
Die Infobox ist ein Formular dass bei mir in allen Programmen zur Verfügung steht, im Prinzip eine Massegebox mit optionalem Autoclose nach einstellbarer Zeit.

Danke für die Hilfe

Gruß Christian

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel