ReadXML in ein DataSet und dann?

  • VB.NET
  • .NET 4.5

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

    ReadXML in ein DataSet und dann?

    Huhu,

    ich lese eine XML-Datei in ein DataSet mit Dts.ReadXML() und schaue mit einem DGV, was drin steht. Das DataSet ist auf drei Tabellen reduziert, um den Fehler einzugrenzen. Tab B ist Childtabelle von A und Tab C ist Child von B. Die Datei enthält nur einen Datensatz A, einen B und zwei C.
    Ich stelle fest, dass für Tab C zwar Datensätze angelegt werden, aber das (einzige) Feld leer bleibt. ?( In einer Minisolution, die nur den Load macht und zwei DGVs hat, funktioniert das ohne Probleme.
    Nun bin ich ratlos, warum das in meiner großen Solution nicht funktioniert.
    Hat das VS irgendwelche Werkzeuge, die mir den Inhalt von so einem DataSet anzeigen?

    Viele Grüße,
    Oliver
    Kannst Du mal die MiniSolution hier anhängen? Ich verstehe gerade das Problem nicht.
    Ah Stop. In der Minisolution funktioniert es aber in einer andere nicht?

    Wie sieht denn das Dataset der grossen Solution aus?
    Hast du da noch mehr Tabellen als die 3?
    Welche Relationen sind da vorhanden und welchen Code nutzt Du dort?
    Was meinst Du damit,

    OliverSte schrieb:

    dass für Tab C zwar Datensätze angelegt werden, aber das (einzige) Feld leer bleibt.

    Was für ein Feld? Kannst Du da mal einen Screenshot des DataSetDesigners und des resultierenden DGVs machen und posten?
    Um das komplette DataSet zu prüfen, müsstest Du über das Fenster »Datenquellen« 3 unterschiedliche DGVs auf das Form ziehen, um deren Inhalt zu sehen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @Akanel
    Das DataSet sieht so aus:
    Die Minisolution zeigt mir das XML-File so an:

    XML-Quellcode

    1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    2. <DS04_data xsi:schemaLocation="ica DS04.xsd" xmlns="ica" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    3. <RZ>RZ Nord</RZ>
    4. <SE>N010000</SE>
    5. <dateidatum>2017-02-22T16:32:28</dateidatum>
    6. <zeitraum></zeitraum>
    7. <DS04>
    8. <kommNr>N01000000000492873</kommNr>
    9. <TeilnahmeIntervall>reguläre Folgeuntersuchung</TeilnahmeIntervall>
    10. <DS04_patho_diagnose>
    11. <laes_Nr>1</laes_Nr>
    12. <patho_Diagnose>Duktales Carcinoma in situ (DCIS)</patho_Diagnose>
    13. <patho_Diagnose>Invasives Karzinom</patho_Diagnose>
    14. </DS04_patho_diagnose>
    15. </DS04>
    16. </DS04_data>


    @VaporiZed
    So sieht der Fehler in meiner großen Solution aus:


    @ErfinderDesRades
    Ich habe keinen DataSetViewer in AllTogether gefunden, lediglich eine frmDataBaseViewer. Die zeigt mir aber nichts brauchbares in meiner Solution an.
    Aber eben zu diesem Zweck habe ich mir auch sowas gebaut:
    Nur, da ich nicht so ein Crack bin wie du, vertraue ich meiner Lösung nicht. Scheint aber, als könne ich das ruhig. Der Fehler hier entsteht nicht beim DataBinding, sondern vorher, beim Einladen. Ich nutze die "Blackbox"

    VB.NET-Quellcode

    1. ​DS04ausMasc.ReadXml(OpenFileDialog1.FileName)
    und kann danach nur sehen, dass etwas nicht richtig ist.
    Uhhh, ich hab das Problem zwar gelöst, aber weiß nicht, wie es entstanden ist.
    Ich habe mir die XSD-Dateien der Datasets aus der OK und der Nicht-OK Solution angesehen und verglichen. Dabei ist mir ein essentieller Unterschied aufgefallen. Ich habe den betreffenden Abschnitt mit zusätzlichen Zeilenumbrüchen abgesetzt und den ganzen msprop-Kram zur besseren Übersicht entfernt

    Nicht OK:

    XML-Quellcode

    1. <xs:element name="DS04_patho_diagnose" minOccurs="0" maxOccurs="unbounded">
    2. <xs:complexType>
    3. <xs:sequence>
    4. <xs:element name="laes_Nr" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
    5. <xs:element name="patho_Diagnose" minOccurs="0" maxOccurs="unbounded">
    6. <xs:complexType>
    7. <xs:sequence>
    8. <xs:element name="patho_Diagnose" type="xs:string" minOccurs="0" />
    9. <xs:element name="DS04_patho_diagnose_Id" type="xs:int" minOccurs="0" />
    10. </xs:sequence>
    11. </xs:complexType>
    12. </xs:element>
    13. </xs:sequence>
    14. <xs:attribute name="DS04_Id" form="unqualified" type="xs:int" />
    15. <xs:attribute name="DS04_patho_diagnose_Id" form="unqualified" type="xs:int" use="required" />
    16. </xs:complexType>
    17. </xs:element>


    OK:

    XML-Quellcode

    1. <xs:element name="DS04_patho_diagnose" minOccurs="0" maxOccurs="unbounded">
    2. <xs:complexType>
    3. <xs:sequence>
    4. <xs:element name="laes_Nr" type="xs:string" minOccurs="0" msdata:Ordinal="2" />
    5. <xs:element name="patho_Diagnose" nillable="true" minOccurs="0" maxOccurs="unbounded">
    6. <xs:complexType>
    7. <xs:simpleContent>
    8. <xs:extension base="xs:string">
    9. <xs:attribute name="DS04_patho_diagnose_Id" form="unqualified" type="xs:int" />
    10. </xs:extension>
    11. </xs:simpleContent>
    12. </xs:complexType>
    13. </xs:element>
    14. </xs:sequence>
    15. <xs:attribute name="DS04_Id" form="unqualified" type="xs:int" />
    16. <xs:attribute name="DS04_patho_diagnose_Id" form="unqualified" type="xs:int" use="required" />
    17. </xs:complexType>
    18. </xs:element>


    Im DatasSet Designer sehen beide völlig identisch aus. Das ist, was mir Sorgen macht.
    Hat dazu jemand eine Erklärung?