Announcement

Collapse
No announcement yet.

Joins mit DataSet/DataTable oder DataView

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Joins mit DataSet/DataTable oder DataView

    Hallo Community,

    ich habe in einem DataSet 2 Tabellen, die mit einer Relation in Bezieheung (1:N) stehen. Nun möchte ich in einem DataGrid alle Spalten aus der einen Tabelle (Child) und zusätzlich eine Spalte aus der Parenttabelle anzeigen. Eigentlich macht man sowas ja mit JOIN.

    Wie kann ich das mit den Datenobjekten machen?

    Andreas

  • #2
    Hallo,

    in diesem Fall hilft die <b>Expression</b>-Eigenschaft von <b>DataColumn</b> weiter: <br>
    a) <b>Child</b>(RelationName) = Zugriff auf eine Spalte der Child-Tabelle (untergeordneten Tabelle) <br>
    b) <b>Parend</b>(RelationName) = Zugriff auf eine Spalte der Parent-Tabelle (übergeordnete Tabelle) <br>

    Das folgende Beispiel demonstriert dies. Im DataGrid kann die Spalte "Anrede" der Tabelle ANR angezeigt werden, obwohl das DataGrid nur mit der Tabelle KDN verbunden ist:
    <pre>
    <b>private</b> <b>void</b> buttonFill_Click(<b>object</b> sender, System.EventArgs e)
    {
    dataSetRelationJOIN1.EnforceConstraints = <b>false</b>;
    SqlDataAdapter1.Fill(dataSetRelationJOIN1);
    SqlDataAdapter2.Fill(dataSetRelationJOIN1);
    SqlDataAdapter3.Fill(dataSetRelationJOIN1);
    SqlDataAdapter4.Fill(dataSetRelationJOIN1);
    dataSetRelationJOIN1.EnforceConstraints = <b>true</b>;
    statusBar1.Text = <font color="#9933CC">&quot;DataSet wurde gefüllt.&quot;</font>;
    }

    <b>private</b> <b>void</b> buttonAddColumn_Click(<b>object</b> sender, System.EventArgs e)
    {
    <font color="#003399"><i>/*
    VB.NET-Fassung:
    DataSetRelationJOIN1.Tables(&quot;KDN&quot.Columns.Add(&quot;Anrede&quot;, GetType(String), _
    &quot;Parent(ANR_KDN).Anrede&quot

    Siehe Hilfeseite zur Eigenschaft &quot;DataColumn.Expression&quot;
    */</i></font>

    dataSetRelationJOIN1.Tables[<font color="#9933CC">&quot;KDN&quot;</font>].Columns.Add(<font color="#9933CC">&quot;Anrede&quot;</font>, <b>typeof</b>(<b>string</b>),
    <font color="#9933CC">&quot;Parent(ANR_KDN).Anrede&quot; </font>);
    statusBar1.Text = <font color="#9933CC">&quot;Neue Spalte wurde hinzugefügt (JOIN-Ersatz)&quot;</font>;
    }
    </pre&gt

    Comment


    • #3
      Damit wird aber der tabelle KDN eine Spalte hinzugefügt. Damit wird eine Datenredundanz erzeugt. Wenn ich die Tabelle dann in einer XML-Datei ablege, wird die neue Spalte in beiden Tabellen gespeichert.

      EIne reine Ansicht der Parentspalte ist nicht möglich

      Comment


      • #4
        Hallo,

        &gt;Damit wird aber der tabelle KDN eine Spalte hinzugefügt...

        was zur Laufzeit über Add dynamisch hinzugefügt wurde, kann vor dem Speichern in der XML-Datei über Remove oder RemoveAt wieder entfernt werden

        Comment

        Working...
        X