vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Fortgeschrittene
Re: Doppelte Datensätze im DataSet entfernen 
Autor: vbtest2
Datum: 11.12.08 11:33

    Private Function doppeltlöschen(ByVal dt As DataTable, ByVal _
      strEintragPrüfen1 As String) As DataTable
        Dim dtTmp As New DataTable()
        Dim Id As String
        dtTmp = dt.Clone
        Dim ndr As DataRowView
 
        dt.DefaultView.Sort = strEintragPrüfen1
 
        For Each ndr In dt.DefaultView
            If Id = "" OrElse Not Id = Convert.ToString(ndr(strEintragPrüfen1)) _
              Then
                dtTmp.ImportRow(ndr.Row)
                Id = ndr(strEintragPrüfen1)
            End If
        Next ndr
 
        Return dtTmp
    End Function
 
    Private Function doppeltlöschen(ByVal dt As DataTable, ByVal _
      strEintragPrüfen1 As String, ByVal strEintragPrüfen2 As String) As _
      DataTable
        Dim dtTmp As New DataTable()
        Dim Id, id2 As String
        dtTmp = dt.Clone
        Dim ndr As DataRowView
 
        dt.DefaultView.Sort = strEintragPrüfen1
 
        For Each ndr In dt.DefaultView
            If Id = "" OrElse Not Id = Convert.ToString(ndr(strEintragPrüfen1)) _
              OrElse Not id2 = Convert.ToString(ndr(strEintragPrüfen2)) Then
                dtTmp.ImportRow(ndr.Row)
                Id = ndr(strEintragPrüfen1)
                id2 = ndr(strEintragPrüfen2)
            End If
        Next ndr
 
        Return dtTmp
    End Function
 
    Private Function doppeltlöschen(ByVal dt As DataTable, ByVal _
      strEintragPrüfen As String, ByVal strEintragPrüfen2 As String, ByVal _
      strEintragPrüfen3 As String) As DataTable
        Dim dtTmp As New DataTable()
        Dim Id, id2, id3 As String
        dtTmp = dt.Clone
        Dim ndr As DataRowView
 
        dt.DefaultView.Sort = strEintragPrüfen
 
        For Each ndr In dt.DefaultView
            If Id = "" OrElse Not Id = Convert.ToString(ndr(strEintragPrüfen)) _
              OrElse Not id2 = Convert.ToString(ndr(strEintragPrüfen2)) OrElse _
              Not id3 = Convert.ToString(ndr(strEintragPrüfen3)) Then
                dtTmp.ImportRow(ndr.Row)
                Id = ndr(strEintragPrüfen)
                id2 = ndr(strEintragPrüfen2)
                id3 = ndr(strEintragPrüfen3)
            End If
        Next ndr
 
        Return dtTmp
    End Function
 
    Private Function doppeltlöschen(ByVal dt As DataTable, ByVal _
      strEintragPrüfen1 As String, ByVal strEintragPrüfen2 As String, ByVal _
      strEintragPrüfen3 As String, ByVal strEintragPrüfen4 As String) As _
      DataTable
        Dim dtTmp As New DataTable()
        Dim Id, id2, id3, id4 As String
        dtTmp = dt.Clone
        Dim ndr As DataRowView
 
        dt.DefaultView.Sort = strEintragPrüfen1
 
        For Each ndr In dt.DefaultView
            If Id = "" OrElse Not Id = Convert.ToString(ndr(strEintragPrüfen1)) _
              OrElse Not id2 = Convert.ToString(ndr(strEintragPrüfen2)) OrElse _
              Not id3 = Convert.ToString(ndr(strEintragPrüfen3)) OrElse Not id4 _
              = Convert.ToString(ndr(strEintragPrüfen4)) Then
                dtTmp.ImportRow(ndr.Row)
                Id = ndr(strEintragPrüfen1)
                id2 = ndr(strEintragPrüfen2)
                id3 = ndr(strEintragPrüfen3)
                id4 = ndr(strEintragPrüfen4)
            End If
        Next ndr
 
        Return dtTmp
    End Function
 
 
 
        Dim dt As New DataTable()
 
        '// Füllen	
 
 
        dt.Columns.Add("Datum")
        dt.Columns.Add("Vorname")
        dt.Columns.Add("Nachname")
 
        Dim dr As DataRow
        dr = dt.NewRow
        dr("Datum") = "1.1.08"
        dr("Vorname") = "aaa"
        dr("Nachname") = "bbb"
        dt.Rows.Add(dr)
 
        dr = dt.NewRow
        dr("Datum") = "1.5.08"
        dr("Vorname") = "ccc"
        dr("Nachname") = "ddd"
        dt.Rows.Add(dr)
 
        dr = dt.NewRow
        dr("Datum") = "1.2.08"
        dr("Vorname") = "aaa"
        dr("Nachname") = "bbb"
        dt.Rows.Add(dr)
        ' usw... 
 
 
        dt = doppeltlöschen(dt, "Nachname", "Vorname")
 
        MsgBox(dt.Rows(0).Item(2))
        MsgBox(dt.Rows(1).Item(2))
        MsgBox(dt.Rows(2).Item(2))
Lauffähig ist der Code in dieser Form. (dtTmp.ImportRow(ndr.Row)). Da das Datum an dem der Datensatz angelegt wurde nicht wichtig ist sollen für die Entscheidung ob ein Datensatz doppelt ist nur Vor- und Nachname benutzt werden.
Soweit funktioniert das.

Diese Funktion soll aber für verschiedene Datensätze benutzt werden. Diese haben eine unterschiedliche Anzahl an Columns und es sind unterschiedlich viele Entscheidungsträger zu bearbeiten welche mit OrElse zu verknüpfen wären. Es muß also für jede Art eine eigene Funktion angelgt werden. Das ist ziemlich aufwändig.

Kann man das irgendwie umschreiben damit der Code kürzer wird ?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Doppelte Datensätze im DataSet entfernen3.780jensW28.06.04 12:39
Re: Doppelte Datensätze im DataSet entfernen3.471WaldiMaywood28.06.04 20:49
Re: Doppelte Datensätze im DataSet entfernen3.439vbtest210.12.08 11:03
Re: Doppelte Datensätze im DataSet entfernen3.232ModeratorFZelle10.12.08 14:30
Re: Doppelte Datensätze im DataSet entfernen3.257vbtest210.12.08 20:13
Re: Doppelte Datensätze im DataSet entfernen3.285ModeratorFZelle11.12.08 09:24
Re: Doppelte Datensätze im DataSet entfernen3.230vbtest211.12.08 11:33

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-2025 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