Dataset mit mehreren DataTables in separate XMl schreiben

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Amelie.

    Dataset mit mehreren DataTables in separate XMl schreiben

    Neu

    Hi Leute

    ich schreibe gerade ein Programm zur Erstellung von Angeboten, Aufträgen, etc. Zur Speicherung von Daten bezogen auf die Firma, deren Mitarbeiter und Urlaubszeiten habe ich ein DataSet angelegt, dieses enthält vier DataTables.

    1. Company,
    2. Mitarbeiter,
    3. Urlaubsantrag (parent table)
    4. Mitarbeiterurlaub (child table)

    Die Daten werden mittels DataSet.WriteXml und DataSet.ReadXml gespeichert und wieder eingelesen. Ich würde gern die Daten für die Parent und Child Tables separat abspeichern, in einer Datei.

    Will halt nicht alles in eine XML-Datei schreiben mit

    VB.NET-Quellcode

    1. DtsFirma.WriteXml(companydaten)


    Bei der Table Company bzw. Mitarbeiter ist das einfach.

    VB.NET-Quellcode

    1. Me.Validate
    2. CompanyBindingSource.Endedit
    3. DtsFirma.Company.writexml(companydaten)


    Gibts ne Möglichkeit, die Daten der Parent und Child Table in eine XML Datei zu schreiben? Die Daten in zwei XML zu speichern geht ohne Probleme, würde jedoch gern wissen wie und ob es in eine XMl auch gehen würde. Aktuell habe ich in meinem Projekt mehrere DataSets, um dieses Problem zu umgehen. Denke aber, das das nicht die richtige Lösung sein kann. Ich muss ja die Daten der Parent und Child Table speichern, da es sonst keinen Sinn ergibt. Und die Daten lassen sich nicht in eine Datei schreiben mit obigem Code.
    Ich hoffe das war verstädnlich. Wäre für jeden Hinweis Dankbar.

    Danke vorweg. mfg, silverbob
    Bilder
    • Dtsfirma.png

      25,98 kB, 772×518, 61 mal angesehen

    Neu

    Moin moin

    So ganz habe ich deine Frage, dein Problem noch nicht verstanden.
    Aber beim betrachten deines DS fällt mir etwas auf.

    Müssten die Tables "Mitarbeiter" und "Mitarbeiterurlaub" nicht miteinander eine Beziehung haben?

    Jeder Mitarbeiter hat =====> X Urlaubstage
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Neu

    Da sind Datenredundanzen drin. Mitarbeiter - Urlaubsantrag - Mitarbeiterurlaub. Und manche Sachen sollten ggf. in eigene Tabellen. Sollte z.B. mal wieder ne Krankenkasse ihren Namen (z.B. durch Fusion mit einer anderen) ändern, muss meist an mehreren Stellen rumgefummelt werden, wenn die Krankenkasse an sich in der MA-Tabelle steht.
    Aber um die Frage zu beantworten: AFAIK von Haus aus ganz oder gar nicht: Das komplette DataSet in ne XML oder nur einzelne Tabellen. Klar kannst Du es manuell auch so machen, dass Du beide DataTables in ein neues, temporäres DS verfrachtest und dieses speicherst, siehe z.B. stackoverflow
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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

    Neu

    Hallo

    danke für eure Antworten. Ja, hab auch schon daran gedacht, das das DataSet nicht korrekt ist und Beziehungen fehlen. Bin noch dabei das zu verfeinern. Hatte die HOffnung, das ich nicht jedes mal ein neues DataSet anlegen muss um das zu umgehen.

    @Amelie: hats natürlich recht, das macht keinen Sinn, muss das ändern. Da muss noch ne Spalte Urlaubstage rein. Und eine Beziehung zu Mitarbeiterurlaub rein.
    Will einfach nicht alle Daten in eine XML schreiben. Ich könnte ja die Daten aller DataTables in eine XML schreiben, das will ich halt nicht, weil die Datei nachher viel zu groß wird. Über einen Zeitraum von einem Jahr würden sich sehr viele Daten ansammeln.
    Für das DataSet DtsFirma wäre die Datenmenge bestimmt nicht ganz so groß, wie für mein DataSet DtsAngebot.

    @VaporiZed: Danke für deine Antwort. Anscheinend muss ich das DataSet überdenken.

    Der Ansatz, das DataSet in ein temporäres zu schreiben ist nichts für mich.

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

    Neu

    ErfinderDesRades schrieb:

    probierma

    silverbob76GE schrieb:

    Will halt nicht alles in eine XML-Datei schreiben mit
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    probierma

    VB.NET-Quellcode
    DtsFirma.WriteXml(<pfad_zur_xmlDatei>)
    das schreibt das ganze Dataset weg - in eine Datei.


    Genau das will ich ja eben nicht. Das das so geht wie du geschrieben hats weiß ich ja, dank deinen TUTS.
    Aber denke halt bei so vielen DataTables die ich habe das es Sinn macht, diese in mehrere DataSets aufzuteilen.
    Dann kann ich auch jede Parent-Child in eine XML speichern. Außerdem minimiere ich das Risiko, falls was schief gehen sollte, alle Daten zu verlieren.
    Bin da halt etwas vorsichtig.
    Bilder
    • Alle DataSets.png

      9,01 kB, 180×442, 28 mal angesehen

    Neu

    silverbob76GE schrieb:

    Dann kann ich auch jede Parent-Child in eine XML speichern.
    Aber wehe, wenn sich die interne Struktur ändert und die einzelnen Views nicht mehr kompatibel zur alten Version sind.

    silverbob76GE schrieb:

    Außerdem minimiere ich das Risiko, falls was schief gehen sollte, alle Daten zu verlieren.
    Bin da halt etwas vorsichtig.
    Echte Vorsicht wäre ein vernünftiges Backup-Konzept.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Neu

    Moin moin

    @silverbob76GE
    Wenn ich mir deine ganzen DS`s ansehe, würde ich auch mal auf eine DB gehen.
    SqLight oder LiteDB vielleicht. SInd einfach in VB zu nutzen. Auf der anderen Seite, wenn das eine Firma ist evtl auch SQL Compact, hieß das mal.

    Aufjedenfall wäre es unabdingbar das du nochmal deine ganzen DS´s / Tabellen überarbeitest. Dabei ist es ja erstmal egal wo die ganzen Daten dann abgelegt werden, ob in XML oder in DB.

    Fragen:
    Wie stehen denn die DT´s zueinander in Beziehung?
    Zum Beispiel: DtsKunde und DtsOrder ?? usw...

    Wenn du bei XML bleiben möchtest, kannst du natürlich auch für einzelne Tabellen separate XML-Dateien erstellen, kommt halt auf Sinnhaftigkeit an und vor allem wie die Tabellen in Beziehung stehen. Das könnte dann einen erheblichen Aufwand nach sich ziehen.


    Achja: Echte Vorsicht wäre ein vernünftiges Backup-Konzept. Besser kann man es nicht ausdrücken :thumbsup:
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:

    Neu

    Hi @Amelie

    vielen Dank für deine Hinweise. Aktuell funktioniert das Programm wie es soll. Wollte nun den Code verfeinern und optimieren.
    Die DataSets funktionieren so weit alle. Ich habe zwischen den DataSets keine Beziehungen. Im Moment denke ich bleibe ich bei XML statt DB.

    wenn das eine Firma ist evtl

    Eigentlich fing das als privates Projekt damit an, das ich in Excel für meine Frau eine Tabelle erstellen wollte, damit Sie Angebote und Auftragsbetsätigungen schreiben kann. Excel ist zwar gut, aber das hat mir dann schnell nicht mehr gereicht.

    Die Benamung ist etwas unglücklich, da mal Deutsch mal Englisch. Da ich noch Anfänger bin in VB, bin ihc mit dem Ergebnis zu Frieden. Das würden die Experten hier mit Sicherheit alle anders sehen, aber habe nicht so viel Zeit zum coden wie ich gern hätte.

    Eine Beziehung zwischen den DataSets DtsKunde und DtsOrder bzw. DtsProjekt müsste ich eigentlich herstellen, um direkt alle Aufträge eines Kunden zu sehen. Ich überlege noch, wie ich das am besten anstelle, ohne das mir gleich das ganze Prog wegschmiert.

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

    Neu

    @silverbob76GE

    ​Wollte nun den Code verfeinern

    Nun da hier noch kein Code gezeigt wurde, kann man das schwer beurteilen, was du gemacht hast. Gerade im Bezug auf die vielen DataSets.

    ​funktioniert das Programm wie es soll

    Mit dem DS wie oben abgebildet. Hui.. das scheint mit, wenngleich ich noch nicht soviel Ahnung von DS / DT habe wie andere die hier schon geschrieben haben, denke ich, das dass auf wackligen Beinen steht.

    ​denke ich bleibe ich bei XML statt DB

    1.) Datenbank vs XML-Dateien ist natürlich auch ein Thema von Datensicherheit :!: Eine XML kann man mit jedem Editor einsehen, bei DB´s ist das schon etwas komplizierter. Dann ist da noch das Konzept mit BackUps usw...
    2.) Mit XML kommst du natürlich auch irgendwann an die Grenzen was Performance usw betrifft. Und das mit deinen DT`s ... hmmm??


    ​ohne das mir gleich das ganze Prog wegschmiert.

    Da wäre wohl der beste Weg, das Projekt so zu belassen, wenn es deinen Anforderungen entspricht und nun hergehen und ein sauberes neues Projekt zu beginnen.
    Da erstmal für dich und andere eine "Anfoderung" auszuformulieren, damit Du und andere wissen was denn dein Programm schlussendlich machen soll.
    Dann kannst du auch gezielt ein sauberes DataSet und DataTables erstellen. Wie die Daten dann letztendlich gespeichert werden, XML / DB kann man dann ja noch überlegen.
    Ich denke, da kann dir @ErfinderDesRades am besten helfen. Ich fand seine Tips / Ratschläge in Bezug auf DS / DT immer sehr hilfreich.
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh: