Dataset Datatable XML

  • VB.NET
  • .NET 4.5

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

    Dataset Datatable XML

    Hallo,

    ich bin mir nicht sicher, ob mein Anliegen im richtigen Forum ist.

    Folgende Situation ist derzeit vorhanden:
    In einer vb.net sollen Tabelarische Angaben von einem UserForm in eine xml-Datei gespeichert werden.

    Für die Verbindung der Dataset und der xml-Datei fehlt die Verbindung.

    Als Editor nutzw ich Visual Studio 2015.

    Ich suche ein Beispiel-Projekt, in denen das Verfahren exemplarisch umgesetzt wurde.

    Weiß jemand, wo man sich ein passendes Demo-Projekt herunterladen kann?

    Vielen Dank im voraus.

    Nachtrag:
    Im Anhang ist eine XML-Datei mit Demo-Einträgen, die über die Userform ausgelesen & bearbeitet werden sollen.
    Dateien
    • Daten.xml

      (1,3 kB, 9 mal heruntergeladen, zuletzt: )

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

    BigBen2003 schrieb:

    In einer vb.net sollen Tabelarische Angaben von einem UserForm in eine xml-Datei gespeichert werden.

    Für die Verbindung der Dataset und der xml-Datei fehlt die Verbindung.


    Worum geht's? Ich versteh nicht, welche Situation grad vorliegt. Du hast ein DataSet und dort enthalten einige TataTables mit Daten und die sollen in einer XML-Datei gespeichert werden?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von VaporiZed, mal wieder aus Grammatikgründen.

    ― Eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    ― If Not GrammarIsOk() Then AssumeThatCodeIsOk = False
    ― »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«
    Hallo VaporiZed,

    habe im Nachhinein noch eine xml-Datei angehängt, in der einige Beispiel-Einträge enthalten sind.

    Diese sollen über eine UserForm bearbeitet werden.

    Ich weiß nicht, wie die Verbindung zwischen der Userform und der XML-Datei hergestellt werden sollen.

    -----------------------------

    ErfinderDesRades schrieb:

    probierma das: Daten laden und speichern


    Hallo ErfinderDesRades,
    genau das habe ich gesucht. Vielen Dank. :)

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

    Hallo,

    mit xmlWriter bzw. xmlReader kann ein Dataset komplett geschrieben bzw. eingelesen werden. Soweit so gut.

    Wenn eine Tabelle auf eine andere Tabelle verweist, müssen beim Einlesen erst die Detail-Tabelle vorhanden sein. Anschließend dürfen erst die anderen Einträge eingelesen werden.

    Beim Einlsen wird eine DataException ausgelöst,die darauf hinweist, dass auf einen nicht existierende Datensatz verwiesen wird. Ich nehme an, dass es sich um eine Tabelle handelt, die zu em Zeitpunkt noch leer ist.

    Kann die Reihenfolge der Tabellen beeinflusst werden, in der diese vom xmlReader eingelesen werden?

    Oder kann die Datenprüfung während des Einlesens deaktiviert werden?


    Nachtrag:
    Wenn das Einlesen von nur einer Tabelle in Auftrag gegeben wird, funktioniert das Einlesen fehlerfrei.

    Beim explizitem Einlesen der Tabelle tab_Infos wird auch die Tabelle tab_Article gefüllt.

    Im Anhang sind einige Beispiel-Einträge zusammen mit dem Aufbau der Datasets in Form einer xml-Datei, die mit xmlReader eingelesen werden soll.

    Nachtrag 2:

    Im Beispiel-Projekt "FourViews" vom "ErfinderDesRades" im Form "FormCoding" werden mehrere Tabellen mit readxml fehlerfrei eingelesen.
    Hinter der Geheimnis bin ich noch nicht gekommen.
    Dateien
    • Daten.xml

      (4,88 kB, 8 mal heruntergeladen, zuletzt: )

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

    ja, bei verknüpften Tabellen wird die Persistierung langsam aber sicher immer anspruchsvoller.
    Dennoch ist das das einfachste, was möglich ist.
    Und ja, die Constraint-Überprüfung kann deaktiviert werden, über die Property .EnforceConstraints
    Was ich allerdings nicht recht verstehe ist, warum du den im Tut gegebenen Code nicht einfach verwendest. Weil da sind ja alle diese Probleme gelöst.

    ErfinderDesRades schrieb:


    Was ich allerdings nicht recht verstehe ist, warum du den im Tut gegebenen Code nicht einfach verwendest. Weil da sind ja alle diese Probleme gelöst.


    Ich versuche es ja, den Code aus dem Tutorial zu verwenden. Bin noch nicht dahinter gekommen, welche Dateien da zu übernehmen sind.

    Muss mir noch mal die Youtube-Videos anschauen, da habe ich bestimmt noch etwas übersehen.

    Nachtrag:
    Braucht man nur die Komponente "HelpersSmallEd" ins eigene Projekt übernehmen, um den Code aus dem Tutorial nutzen zu können?

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

    Neu

    HelpersSmallEd ist keine Komponente, sondern ist ein Projekt.
    Mach dir die Begriffe "Projekt" und "Solution" klar. Sowas steht in Büchern nachzulesen: Entwickler-Ressourcen und Tools, Bücher und WebCasts
    Der dem Tut beiliegende Code ist eine Solution, bestehend aus mehreren Projekten.
    Und das Hauptprojekt hat einen Verweis aufs Helpers-Projekt (damit dieses ihm helpen kann).

    Hier ist ausführlich gefilmt, wie man diese Architektur-Mittel sinnvoll einsetzen kann: vb-paradise.de/allgemeines/tip…ekt-einbinden/#post833560

    Und wie gesagt, der Tut-Code selbst ist ein Beispiel dafür. Ich empfehle übrigens, sich ein gleichartiges Dateisystem aufzubauen. Also Helper-Projekte dürfen nicht in einem Solution-Ordner liegen - sonst findet man sie nicht wieder, wenn man neue Solutions anlegt.

    Neu

    ErfinderDesRades schrieb:

    HelpersSmallEd ist keine Komponente, sondern ist ein Projekt.
    Mach dir die Begriffe "Projekt" und "Solution" klar.


    Hallo,

    sorry für die falsche Benennung der Begriffe. Mir ist schon klar, wasein Projekt und eine Projekt-Mappe ist. Bin nur darauf gekommen, weil beim Anlegen eines Verweises alle aufgelisteten Einträge als "Komponenten" betitelt wurden.

    Neu

    Hallo,

    wenn ich es im Tutorial richtig aufgefasst habe, kommt es auch darauf an, in welcher Reihenfolge im DataSet die Tabellen erstellt werden.

    Im Anhang ist ein Dataset vorhanden, welches nochmals erstellt werden muss, da nicht mehr festgestellt werden kann, welche dieser Tabellen als erstes erstellt wurde.

    Beim Neu Erstellen des Datasets werden die Tabellen in folgender Reihenfolge erstellt:
    1. tab_Hosts
      Dies ist die Haupttabelle, von der abgehend alle Detail-Tabellen verzweigen.
    2. tab_Systems
    3. tab_Ports
    4. tab_Networks
    Beim Erstellen der Gridviews im Userform müssen laut Tutorial ebenfalls eine Reihenfolge eingehalten werden? Muss hier die gleiche Reihenfolge beim Erstellen der GridViews eingehalten werden, oder kommt es lediglich auf das erste GridView an, dass die Einträge später via xmlReader korrekt ausgelesen werden können?

    Das Projekt HelpersSmallEd wurde in der Projektmappe hinzugefügt und zusätzlich im Projekt vom Dataset als Verweis hinzugefügt.

    Ist noch etwas zu beachten?
    Bilder
    • Dataset-Services.png

      6,06 kB, 666×300, 7 mal angesehen

    Neu

    BigBen2003 schrieb:

    Beim Erstellen der Gridviews im Userform müssen laut Tutorial ebenfalls eine Reihenfolge eingehalten werden?
    in meim Tut kommt "GridView" nicht vor. Was meinst du?

    BigBen2003 schrieb:

    Das Projekt HelpersSmallEd wurde in der Projektmappe hinzugefügt und zusätzlich im Projekt vom Dataset als Verweis hinzugefügt.
    Dann sollte die Helpers-Funktionalität bereitstehen.
    Also ein Dataset sollte dann über die Methoden .Fill() und .Save(frm As Form) verfügen.
    Und diese Methoden haben - wenn ich recht erinnere - das Reihenfolgen-Problem gelöst - man muss sie nur aufrufen.
    Rufst du sie denn auf?

    Neu

    Das Projekt HelpersSmallEd ist sehr gut einsetzbar.

    Nur eine Kleinigkeit ist mir aufgefallen.

    Der Pfad zur XML-Datei wird aus ...

    DataFile = New FileInfo(Application.LocalUserAppDataPath).Combine(_Dts.GetType.Name & ".xml")

    ... zusammengesetzt.

    In der Angabe ...

    Application.LocalUserAppDataPath

    ... ist neben dem Local-Applications-Pfad auch die Angabe der Anwendung mit der Versionsnummer enthalten.

    Wenn die Versions der Anwendung verändert wird, muss man selbst dafür sorgen, dass etwaige vorhandene xml-Dateien beim ersten Aufruf in das neue Verzeichnis verschoben werden?

    Neu

    Keine Ahnung.
    Ich deploye eiglich nie versionierte Dlls - immer nur Sources.
    Ja, glaub hast recht: Wenn eine Versions-Änderung den LocalUserAppDataPath ändert, dann muss man evtl. vorhandene DatenDateien wohl iwie umziehen.
    Musste entweder händisch machen, oder wennde Lust hast, schreib doch einen Mechanismus, der bei Fehlen der DatenDatei diese in den LocalUserAppDataPaths älterer Versionen sucht.

    Scheint mir eine sehr knifflige Knobelei.