DBNull Fehler nach erneutem übergeben

  • VB.NET

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

    DBNull Fehler nach erneutem übergeben

    Hallo liebe Community.

    Ich habe eine Tabelle, welche mit einem DataSet arbeitet, die ein Detail-Fenster öffnet wenn man auf eine Zeile klickt.
    Dabei werden einem ein paar Infos über die Zeile genauer und übersichtlicher dargestellt, unter anderem auch ein Bild (PictureBox). Das Bild, dass angezeigt werden soll wird auch angezeigt. Jetzt kommt es zum Fehler:
    1. Ich öffne das Detail-Fenster einer Zeile. Anschließend schließe ich es wieder.
    2. Ich öffne das Detail-Fenster einer anderen Zeile. Anschließend schließe ich es wieder.
    3. Ich öffne das Detail-Fenster der Zeile davor erneut, allerdings stürzt das Programm hier ab und gibt einen "DBNull"-Error als Grund an.
    Jetzt frage ich mich, warum er nicht mehr die Zeile des DataSets korrekt übergibt oder ausliest. In der .xml-Datei wird der Pfad auch nicht gelöscht.
    Komisch ist, dass es nur dann passiert. Ich könnte P2(Punkt 2) x-mal ausführen, und es würde nicht diesen Fehler geben.

    Kann mir da jemand helfen?


    Mit freundlichen Grüßen,
    Maik H.

    Verschoben nach Datenbankprogrammierung
    -Artentus
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation

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

    *push*
    Weiß keiner eine Antwort? :(
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    Ups, danke! Habe das aus Versehn in's falsche Unterforum gepackt. Kann das ein Admin vielleicht verschieben? @Artentus
    Danke... :thumbsup:
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    Welchen Code denn? Kann ja nicht mein ganzes Programm schicken. :D
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    @us4711
    Ok, ok. Warte! Ich suche kurz den Bereich vom Öffnen des Fensters und übergeben der Daten.


    Hier das Aufrufen der Detail-Form:

    VB.NET-Quellcode

    1. Private Sub DataGridView1_CellMouseDoubleClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDoubleClick
    2. Dim frmDetail As New frmDetails((DirectCast(DirectCast(DataTable1BindingSource.Current, DataRowView).Row, Garantie_DataSet.DataTable1Row)))
    3. frmDetail.ShowDialog()
    4. End Sub

    @SpaceyX
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    Sowohl das DataSet als auch das BindingSource liegt auf der Main-Form, nicht auf der Detail-Form.
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    Die Verarbeitung der Daten erfolgt so:

    VB.NET-Quellcode

    1. Public Sub New(row As Garantie_DataSet.DataTable1Row)
    2. InitializeComponent()
    3. NameLabel.Text = row.Name
    4. StartLabel.Text = row.WarrantyStart.ToString("dd.MM.yyyy")
    5. DurationLabel.Text = row.WarrantyDurationMonths.ToString()
    6. EndLabel.Text = row.WarrantyEnd.ToString("dd.MM.yyyy")
    7. RestLabel.Text = row.WarrantyRestDays.ToString()
    8. RichTextBox1.Text = row.Description
    9. If Not System.Convert.IsDBNull(row.Picture) Then
    10. PictureBox1.ImageLocation = row.Picture
    11. End If
    12. End Sub


    Die Fehlermeldung erscheint hier, im DataSet.Desginer:

    VB.NET-Quellcode

    1. Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte Picture in Tabelle DataTable1 ist DBNull.", e)
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation
    Hast Du geprüft, ob der Detailform ein gültiger Datensatz übergeben wird?
    Geh' mal den New(...) Code der Detailform Schritt für Schritt durch, und schau Dir die Werte an.

    Das typisierte Dataset mit der typisierte DataRow hält Funktionen bereit, die auch helfen können, den Fehler zu übergehen:

    VB.NET-Quellcode

    1. If Not row.IsPictureNull Then
    2. ...
    3. End If

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

    Also für mich sieht es logisch aus. Es wird alles korrekt übergeben, bis auf das Bild.
    Allerdings funktioniert es mit deinem Vorschlag garnicht mehr. Selbst wenn ein Bild angegeben wurde, wird es nicht angezeigt.
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation