20 DataTables mit Zeile versehen / vorinitialisieren...

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    20 DataTables mit Zeile versehen / vorinitialisieren...

    Hallo,

    ich habe ein DataSet mit 20 DataTables, in den 20 DataTables will ich eine neue Zeile einfügen, dieses mache ich jetzt z.B. für das erste "DataTablePerson1" so:

    VB.NET-Quellcode

    1. Dim DataSetStrafenNeueZeile As DataRow = Me.DataSetStrafen.DataTablePerson1.NewRow
    2. 'Neue Zeile dazu
    3. Me.DataSetStrafen.DataTablePerson1.Rows.Add(DataSetStrafenNeueZeile)


    ....dann kann ich auch u.a. einen Wert in die Spalte eins "S1" schreiben:

    VB.NET-Quellcode

    1. If System.IO.File.Exists(PfadStrafenXML) Then
    2. 'Strafen eintragen
    3. Me.DataSetStrafen.DataTablePerson1(0).S1 = "S1 Test,,,"
    4. End If
    5. Me.DataSetStrafen.WriteXml(PfadStrafenXML)


    Zu meiner Frage...wie kann ich das

    VB.NET-Quellcode

    1. Dim DataSetStrafenNeueZeile As DataRow = Me.DataSetStrafen.DataTablePerson1.NewRow
    2. 'Neue Zeile dazu
    3. Me.DataSetStrafen.DataTablePerson1.Rows.Add(DataSetStrafenNeueZeile)


    für die 20 DataTables vereinfachen? Natürlich könnte ich es jetzt auch so machen:

    VB.NET-Quellcode

    1. Dim DataSetStrafenNeueZeile1 As DataRow = Me.DataSetStrafen.DataTablePerson1.NewRow
    2. Dim DataSetStrafenNeueZeile2 As DataRow = Me.DataSetStrafen.DataTablePerson2.NewRow
    3. ....
    4. 'Neue Zeile dazu
    5. Me.DataSetStrafen.DataTablePerson1.Rows.Add(DataSetStrafenNeueZeile1)
    6. Me.DataSetStrafen.DataTablePerson2.Rows.Add(DataSetStrafenNeueZeile2)
    7. ....


    ...aber das ist doch bestimmt nicht der eleganteste Weg, oder? Wie macht man so etwas am Besten?

    Vielen Dank!

    Alex0815 schrieb:

    ich habe ein DataSet mit 20 DataTables
    Das ist ein Fehler im Datenmodell.
    Erlerne Datenmodellierung, erstelle ein tragfähiges Datenmodell, dann tun sich ganz neue, und ungleich elegantere Möglichkeiten auf, dein Prob zu lösen.
    Auf einem fehlerhaften Datenmodell kann man nichts aufbauen.
    gugge Datenverarbeitungs-Vorraussetzungen Punkt 5 und 6.
    In den Samples zu 6) werden Daten generiert, in prinzipiell der Art könntest du auch dein Dataset initialisieren.
    Ok, danke. Ich habe es mir auch schon fast gedacht. Also noch einmal vor weg. Ich will folgende Darstellung als DatSet (XML) abspeichern, Siehe "Excel.jpg". Dann habe ich mir es so gedacht wie 1.jpg um halt so eine XML Struktur zu bekommen:

    XML-Quellcode

    1. <?xml version="1.0" standalone="yes"?>
    2. <DataSetStrafen xmlns="http://tempuri.org/DataSetStrafen.xsd">
    3. <DataTablePerson1>
    4. <S1>6</S1>
    5. <S2>778</S2>
    6. </DataTablePerson1>
    7. <DataTablePerson2>
    8. <S1>55</S1>
    9. <S2>23</S2>
    10. </DataTablePerson2>
    11. </DataSetStrafen>


    Ich vermute, was ich aus deiner "relationalen Grundidee" schließe, dass ich mir auch etwas mit Persob ID anlegen muss. Etwa so wie 3.jpg. Aber das kann ich noch nicht, also ich weiß nicht wie ich dann auf ID2.S3 z.B zugreifen kann?!

    Ich benötige das DataSet nur zur Datensicherung, also nicht mal für'n DataGridView o.ä.?!
    Bilder
    • Excel.jpg

      76,3 kB, 904×130, 158 mal angesehen
    • 1.jpg

      133,38 kB, 174×808, 153 mal angesehen
    • 3.jpg

      53,29 kB, 526×372, 145 mal angesehen
    Die Daten lassen sich problemlos in ein Dataset mit 3 Tabellen abspeichern, denn es liegt wies aussieht eine m:n - Relation Person->Zuordnung<-Strafe vor.
    Leider gibt es kein Standard-Control, was m:n-Relationen als Kreuztabelle anzeigt, also so, wie in deim Excel-Bildle gezeigt - da müsste man ziemlich tricksen.
    Aber wenn du nur die Daten speichern willst, dann machs ganz standardmäßig als m:n - Relation.
    Ein Datenmodell mit m:n - Relation ist auch Grundlage aller Beispiele des 4-View-Tutorials (hast dus gefunden?), und es gibt auch einen entsprechenden View dafür, aber ist eben keine Kreuztabelle.

    Hmm - man könnte es auch als eine einzige Tabelle mit 20 Spalten auffassen - also genau, wie dein Excel-Bildle es anzeigt.
    Das wäre nur eine Dataset-Tabelle, und keine Relation.
    Würde aber vorraussetzen, dass es genau 20 Strafen gibt, und jede Person hat 20 Strafen, und es kommen auch keine hinzu oder werden weniger.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ErfinderDesRades schrieb:

    Die Daten lassen sich problemlos in ein Dataset mit 3 Tabellen abspeichern, denn es liegt wies aussieht eine m:n - Relation Person->Zuordnung<-Strafe vor.
    Leider gibt es kein Standard-Control, was m:n-Relationen als Kreuztabelle anzeigt, also so, wie in deim Excel-Bildle gezeigt - da müsste man ziemlich tricksen.
    Aber wenn du nur die Daten speichern willst, dann machs ganz standardmäßig als m:n - Relation.
    Ein Datenmodell mit m:n - Relation ist auch Grundlage aller Beispiele des 4-View-Tutorials (hast dus gefunden?), und es gibt auch einen entsprechenden View dafür, aber ist eben keine Kreuztabelle.

    Hmm - man könnte es auch als eine einzige Tabelle mit 20 Spalten auffassen - also genau, wie dein Excel-Bildle es anzeigt.
    Das wäre nur eine Dataset-Tabelle, und keine Relation.
    Würde aber vorraussetzen, dass es genau 20 Strafen gibt, und jede Person hat 20 Strafen, und es kommen auch keine hinzu oder werden weniger.


    ... ich glaube damit tue ich mich einfacher. Aber dann hätte ich Ja auch (bei 10 Strafen) 200 Einträge (20 Personen * jeweils 10 Strafen)
    Dann kann ich ja auch 20 Tables machen mit je 10 Strafen so wie ich es wollte?!?!? Oder wie meinst Du das ?