Parent-Child-(Child) View

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

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

    Parent-Child-(Child) View

    Guten Abend!

    Bin zur Zeit mit einem kleinen Projekt beschäftigt um die Datenbankprogrammierung besser kennenzulernen, nachdem ich die Basics über Datenmodellierung, RDBS usw. (wie hier im Forum mir geraten wurde). Die guten Anleitungen und Videos von @ErfinderDesRades waren hier grosse Hilfe, danke dafür! ^^

    Ich habe eine eine Datenbank mit versch. Tabelle. Eine dieser Tabellen enthält die Daten zu Vorgängen, wie Lieferschein, Bestellung, Fertigungsauftrag. Jeden Eintrag hat einen VorgangID (unique Id. des Vorgangs) und eine SourceVorgangID (Id. des "Vater-Vorgang").

    Wenn ich im DataSet 2 Tabellen habe, wo ich jeweils die Daten der Tabelle Vorgänge in der DB einlese, dann tuts. Ich sehe im 1. DGV die offene LS, im 2. DGV den Vater Vorgang zu den grad markierten offenen LS und im 3. DGV alle Vorgänge, die vom diesen Vater-Vorgang ableiten, also den LS plus andere wie z.B eine Bestellung oder eine Rechnung.

    Wenn ich aber nur eine Tabelle im DataSet habe und dann für den 3. DGV eine Relation mit sich selbst mache, kriege ich die selbe Daten im 2 und 3 DGV.

    Ich verstehe nicht warum das so ist. Kann mir das jemand evtl erklären?

    Danke im voraus und schönen Abend!
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „rgomez“ ()

    vermutlich die BindingSources falsch konfiguriert.
    Oder das Datenmodell eignet sich nicht.

    rgomez schrieb:

    für den 3. DGV eine Relation mit sich selbst mache
    ist auch etwas unklar formuliert - da bin ich nicht sicher, was du meinst, und ob du's richtig gemacht hast, wenn es das ist, was ich mir vorstellen könnte, was du vlt. meinst.
    Habe endlich mal die Application zum laufen zu bringen.
    -BindingSources waren falsch Danke dafür @ErfinderDesRades.

    Jetzt aber sehe ich meine App braucht mehr als 400MB sobald ich die Daten aus der DB abrufe.

    Ich habe 2 Tabellen (Procedures ca 250.000Records und ProcedurAddress mit ca 500.000). Diese beiden Tabellen sind durch ein FELD "ProcedurID" verbunden.

    In "Procedures" habe ich alle mögliche Procedures. Die Procedures sind miteinander verknüpft durch ein ProcedurID und SourceProcedurID. Es gibt versch. Arten von Procedures (Feld Art)

    Wenn ich jetzt nur eine bestimmte Art von Procedur abfragen will, und dann ALLE andere Vorgänge die von diesen Procedures abhängig sind bzw. abgeleitet werden, muss ich dann ein FILL der beiden Tabellen Procedurs und ProcedursAddress machen? Wenn ich das nicht mache dann findet mein Programm NUR die, die vom Fill abgerufen waren. Also irgendwie sucht das Programm lokal und nicht in der DB und das verstehe ich nicht.

    Ich möchte:

    1. gib mir alle procedures der Art X
    2. Gib mir zu jeder dieser Prozeduren ALLE abgeleiteten Procedures (EGAL WELCHE ART)
    3. Gib mir zu den abgeleiteten Procedures wieder die Procedures, die von diesen ableiten.
    4. .....
    5. .....
    6. ..und so weiter bis keine abgeleiteten PRocedures mehr zu finden sind.

    Mein Programm läuft und tuts was er soll, nur ich bin mir sicher, mein Weg war nicht der richtige Weg und es geht bestimmt besser, eleganter und ohne 400MB RAM Verbrauch.
    Ausserdem alles schön bis jetzt weil mit Designer getan, ich will nacher diese Daten in einer Excel, CSV, XML o.ä exportieren und da kommt der nächste Problem. Dafür ist mein Ansatz zu schlecht.

    Vielleicht hat jemand einen kleinen Tipp oder Info. Bedanke mich im Voraus!

    Schönen Tag!
    Life doesn't give you a datasheet. Sometimes the docs are wrong and you have to try it.
    mich beunruhigt etwas, dass du bereits fleissig mit Datenbanken herumfuhrwerkst, aber noch immer die Begrifflichkeiten der Datenmodellierung nicht oder nicht richtig verwendest.
    Im Modell sind es Relationen, über die Tabellen miteinander verknüpft sind. Im typDataset geschieht das über DataRelation-Objekte, un inne Db richtet man auch Relationen ein.
    Und gut wäre, wenn du einen Screenshot von deim typisierten Dataset anhängen könntest, so Fliesstext-Erläuterungen sind oft fehlerhaft/ungenau, und sind eh schwer zu folgen.

    Und wenn du tatsächlich eine Tabelle rekursiv mit sich selbst verknüpft hast, dann hast du bei der Db-Abfrage einzelner "Äste" eines soclchen Baumes ein erhebliches Problem.
    Klassischerweise arbeitet man in Dbs, die Baumstrukturen abrufbar machen sollen, mit einer Konstruktion namens "nested sets".
    Damit kann man sehr performant Äste abrufen, allerdings das einfügen neuer Knoten gestaltet sich dann umständlich (und löschen auch).

    SqlServer bietet auch einen bes. Datenbanktyp an, die "HierarchicakID" - aber habich noch nie was mit gemacht,