vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 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 - Fortgeschrittene
Re: Hat ein DataTable sich geändert 
Autor: Manfred X
Datum: 30.10.14 12:55

Die Zeilen in einer Datatable bilden eine Auflistung.
Es können deshalb Zeilen gelöscht, eingefügt oder angehängt werden.
Durch solche Operationen verändert sich der Bezug zwischen
dem "rowindex" und der Datenzeile, die dadurch abgefragt wird.

Aus diesem Grund benötigt man eindeutige Schlüssel, wenn man
Datensätze in Tables auf den Inhalt einer Datenbank oder auf
andere Tables beziehen will. Schlüssel können über mehrere Spalten
definiert sein.

Hier ein Beispiel für eine Beziehung zwischen zwei Tabellen
in einem Dataset über eine Datarelation (per PrimaryKey).

Private Sub TableRelation()
 
    Dim dt1 As New DataTable
 
    dt1.Columns.Add("RPM", GetType(Integer))
    dt1.Columns.Add("Sound", GetType(String))
 
    With dt1.Rows
         .Add(1000, "surr")
         .Add(1200, "brumm")
         .Add(1500, "brumm")
         .Add(2500, "pfeif")
         .Add(4000, "rassel")
         .Add(5000, "schepper")
         .Add(6000, "kaputt")
    End With
 
    dt1.PrimaryKey = {dt1.Columns("RPM")} 'eindeutiger Schlüssel
 
    Dim dt2 As New DataTable
 
    dt2.Columns.Add("RPM_2", GetType(Integer))
    dt2.Columns.Add("Sound", GetType(String))
 
    With dt2.Rows
       .Add(2500, "brumm")
       .Add(4000, "quietsch")
       .Add(6000, "jaul")
       .Add(1500, "surr")
       .Add(1200, "surr")
       .Add(1000, "surr")
    End With
 
    dt2.PrimaryKey = {dt2.Columns("RPM_2")} 'eindeutiger Schlüssel
 
    'gemeinsames Dataset
    Dim ds As New DataSet("RPM_Set")
 
    ds.Tables.Add(dt1) : ds.Tables.Add(dt2)
 
    'Beziehung zwischen Tabellen über eine Datarelation
    Dim dr As New DataRelation _
        ("RPM_Relation", dt1.Columns("RPM"), dt2.Columns("RPM_2"), True)
    ds.Relations.Add(dr)
 
 
    For r1 As Integer = 0 To dt1.Rows.Count - 1
        'korrespondierende Zeilen zur r-Zeile in dt1 '
        'per Relation aus dt2 abfragen
        Dim rows_in_dt2 As DataRow() = dt1.Rows(r1).GetChildRows(dr)
        If rows_in_dt2.Count = 0 Then
           Console.WriteLine _
           (dt1.Rows(r1)("RPM").ToString & _
            " keine Entsprechung in Tabelle 2")
        Else
           For rc As Integer = 0 To rows_in_dt2.Count - 1
              Console.WriteLine _
              (dt1.Rows(r1)("RPM").ToString & "--->" & _
               rows_in_dt2(rc)("Sound").ToString)
           Next rc 'Childrows zur row r1 ind dt1
        End If
    Next r1
 
End Sub


Beitrag wurde zuletzt am 30.10.14 um 12:56:58 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Hat ein DataTable sich geändert2.171henrikl200029.10.14 16:14
Re: Hat ein DataTable sich geändert1.636Manfred X29.10.14 18:09
Re: Hat ein DataTable sich geändert1.570henrikl200029.10.14 20:46
Re: Hat ein DataTable sich geändert1.561ModeratorDaveS29.10.14 21:23
Re: Hat ein DataTable sich geändert1.598Manfred X29.10.14 21:26
Re: Hat ein DataTable sich geändert1.579henrikl200030.10.14 08:44
Re: Hat ein DataTable sich geändert1.597Manfred X30.10.14 12:55
Re: Hat ein DataTable sich geändert1.526henrikl200030.10.14 13:11
Re: Hat ein DataTable sich geändert1.565Christoph197229.10.14 18:11

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