DBNull im Dataset

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

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    DBNull im Dataset

    Guten Abend,

    ich sitze grade an einer Anwendung die ein Dataset enthält (Typisiertes Dataset mit dem Designer erstellt). In dem Dataset ist eine berechnete Spalte vom Typ System.Decimal, die beim Erstellen der Zeile noch nicht gefüllt wird. Das führt zu dem Problem, dass diese Zelle automatisch <DBNull> gesetzt wird und das Dataset das überhaupt nicht zulassen will und mir jedesmal eine System.Data.StrongTypingException: "Der Wert für Spalte Ergebnis in Tabelle TblMassen ist DBNull.". Standardmäßig ist die Property "NullValue" mit dem Wert (Throw Exception) gesetzt. Leider kann man das nicht ändern: Der eingegebene Wert ist für den aktuellen Datentyp ungültig.

    Ich habe es so geplant, dass es unumgänglich ist, dass zwischenzeitlich ein Null-Value auftritt, denn die berechnete Zelle bezieht ihre Daten aus einer Child-Row, die zu dem Zeitpunkt ja noch gar nicht existiert...

    Da es sich um eine berechnete Zelle handelt habe ich für die Zelle und für alle Quell-Zellen den DefaultValue auf 0 gesetzt (statt DBNull). Leider ändert das nichts am Problem.

    Wie umgeht man das Problem?
    Komm grad nicht mit. Ich hab ne ChildTable mit ner Decimal-Spalte Value und ne MainTable mit ner Decimal-Spalte und der Expression: SUM(Child.Value). Also Default-Value hab ich 0 eingretragen. Wenn es keine Children gibt, wird mir 0 angezeigt. Wenn es Children gibt, wird mir die Value-Summe angezeigt. So what?
    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.
    Okay nochmal langsam:
    Haupttabelle: Beschreibung(Str) / Fläche(Dec, =Sum(Childtable.Teilfläche)) / KostenProFläche(Dec) / Gesamtkosten (Dec, = Fläche * KostenProFläche)

    Childtabelle: Länge(Dec) / Breite(Dec) / Teilfläche(Dec, =Länge*Breite)

    Den Error wirft die Spalte Haupttabelle.Gesamtkosten bei dem Versuch eine Zeile im Datagridview zu verlassen.
    Das kann aber nicht alles sein: Wo ist die Verknüpfung von Haupt- und Child-Tabelle?
    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.
    Die habe ich der Einfachheit nicht erwähnt:

    Haupttabelle: ID (Int, PrimKey) / Beschreibung(Str) / Fläche(Dec, =Sum(Childtable.Teilfläche)) / KostenProFläche(Dec) / Gesamtkosten (Dec, = Fläche * KostenProFläche)

    Childtabelle: HaupttabelleID(Int, Fremdschlüssel) / Länge(Dec) / Breite(Dec) / Teilfläche(Dec, =Länge*Breite)
    Konnte jetzt kein Problem ermitteln …
    Dateien
    • WinFormsVB.zip

      (25,21 kB, 71 mal heruntergeladen, zuletzt: )
    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.