| |

VB.NET - FortgeschritteneRe: 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 ? |  |
 | 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 |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|