[Erledigt] Ungültige Konvertierung von Typ DBNull in Typ Decimal

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Bitti.

    [Erledigt] Ungültige Konvertierung von Typ DBNull in Typ Decimal

    Hi

    Ich habe eine Mitgliederverwaltung.

    Um den Kontostand des jeweiligen Mitglieds zu berechnen, hab ich fogenden Code

    VB.NET-Quellcode

    1. Private Sub MitgliedsnummerTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MitgliedsnummerTextBox.TextChanged
    2. 'Einnahmen und Ausgaben der Mitglieder Filtern'
    3. Me.BuchhaltungBindingSource.Filter = "Mitgliedsnummer =" + Me.MitgliedsnummerTextBox.Text.ToString
    4. 'Kontostand des Mitglieds berechnen bei Mitgliederwechsel'
    5. Dim einnahmen As Decimal = VereinDataSet.Tables("Buchhaltung").Compute("SUM(Einnahme)", "Mitgliedsnummer =" + MitgliedsnummerTextBox.Text)
    6. Dim ausgaben As Decimal = VereinDataSet.Tables("Buchhaltung").Compute("SUM(Ausgabe)", "Mitgliedsnummer =" + MitgliedsnummerTextBox.Text)
    7. KontostandTextBox.Text = einnahmen - ausgaben
    8. End Sub

    Was auch funktioniert.

    Wenn ich aber jetzt ein neues Mitglied anlegen will, kommt die Fehlermeldung

    Ungültige Konvertierung von Typ DBNull in Typ Decimal

    Kann mir bitte jemand sagen, wie ich den Fehler weg bekomme.
    Hab auch mal einen Screen angehängt.

    Danke und Gruß
    Bitti
    Bilder
    • fehler.png

      38,63 kB, 1.587×404, 236 mal angesehen
    Gruß Bitti

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

    Hi

    Könntest du mir bitte mal ein Codebeispiel nennen.
    Ich hab schon die Suche und Google bemüht aber irgendwie nix gefunden.

    Danke und Gruß
    Bitti
    Gruß Bitti

    VB.NET-Quellcode

    1. If VereinDataSet.Tables("Buchhaltung").Compute("SUM(Einnahme)", "Mitgliedsnummer =" + MitgliedsnummerTextBox.Text) IsNot System.DBNull AndAlso VereinDataSet.Tables("Buchhaltung").Compute("SUM(Ausgabe)", "Mitgliedsnummer =" + MitgliedsnummerTextBox.Text) IsNot System.DBNull Then
    2. 'Kontostand des Mitglieds berechnen bei Mitgliederwechsel'
    3. Dim einnahmen As Decimal = VereinDataSet.Tables("Buchhaltung").Compute("SUM(Einnahme)", "Mitgliedsnummer =" + MitgliedsnummerTextBox.Text)
    4. Dim ausgaben As Decimal = VereinDataSet.Tables("Buchhaltung").Compute("SUM(Ausgabe)", "Mitgliedsnummer =" + MitgliedsnummerTextBox.Text)
    5. KontostandTextBox.Text = einnahmen - ausgaben
    6. Else
    7. KontostandTextBox.Text = 0
    8. End If


    könnte man jetzt entsprechend noch schöner machen, aber so sollte es funktionieren...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

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

    Hi

    Kann es vielleicht daran leigen, daß die Spalte Mitgliedsnummer ein Primärschlüssel ist, und Autoincrement?
    Wenn ja wie kann ich das ändern.

    Danke und Gruß
    Bitti
    Gruß Bitti
    hat es denn etwa nicht funktioniert?

    also für mich sagt die Fehlermeldung klar aus, dass die Spalten leer sind und nichts kann man ja auch nicht Konvertieren...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Nein hat nicht funktioniert.

    Als Fehlermeldung kommt immer
    "DBNull" ist ein Typ in "System" und kann nicht als Ausdruck verwendet werden
    Gruß Bitti
    So hab es jetzt so hinbekommen

    VB.NET-Quellcode

    1. If IsDBNull(MitgliedsnummerTextBox.Text) Then
    2. MitgliedsnummerTextBox.Text = 0
    3. 'Kontostand des Mitglieds berechnen bei Mitgliederwechsel'
    4. Dim einnahmen As Decimal = VereinDataSet.Tables("Buchhaltung").Compute("SUM(Einnahme)", "Mitgliedsnummer =" + MitgliedsnummerTextBox.Text)
    5. Dim ausgaben As Decimal = VereinDataSet.Tables("Buchhaltung").Compute("SUM(Ausgabe)", "Mitgliedsnummer =" + MitgliedsnummerTextBox.Text)
    6. KontostandTextBox.Text = einnahmen - ausgaben
    7. End If
    Gruß Bitti

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Bitti“ ()