Eine an Datenbank gebundenes Label für Währung formatieren *gelöst*

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von HerrFrie.

    Eine an Datenbank gebundenes Label für Währung formatieren *gelöst*

    Hallo,

    ich habe zur Ansicht ein Label an eine Spalte in einer Datenbank gebunden. Die angezeige Spalte ist eine Währung.

    VB.NET-Quellcode

    1. Dialog1.Lb_Beitrag.DataBindings.Add("Text", Dialog1.CB_Status.DataSource, "Beitrag")


    Kann ich das Label irgendwie formatieren, dass der dort z.B. "22,50 €" anstatt "22,5" angezeigt wird ?

    In der SuFu habe ich ein Beispiel in VB6 oder früher gefunden, dass funktioniert aber leider nicht.

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

    Hi,

    da kommt leider eine Fehlermeldung wegen Konvertierung in Double.

    VB.NET-Quellcode

    1. Dialog1.Lb_Beitrag.DataBindings.Add("Text", Dialog1.CB_Status.DataSource, "Beitrag")
    2. Dialog1.Lb_Beitrag.Text = Format(CDbl(Dialog1.Lb_Beitrag.Text), ".00" & " €")


    Ich hatte gestern noch probiert, die gesamte Spalte im DataGridView als Currency im SELECT Befehl zu formatieren, aber das half leider auch nur für die Ansicht im DGV.
    Erfolg hatte ich dann über einen AddHandler.
    Es ist nur ein Feld was betroffen ist, deshalb ist das mit dem AddHandler Ok.

    VB.NET-Quellcode

    1. Dim Beitrag2 As New Binding("Text", Dialog1.CB_Status.DataSource, "Beitrag")
    2. AddHandler Beitrag2.Format, New ConvertEventHandler(AddressOf Me.DecToCurrString)
    3. AddHandler Beitrag2.Parse, New ConvertEventHandler(AddressOf Me.CurrStringToDec)
    4. Dialog1.Lb_Beitrag.DataBindings.Add(Beitrag2)
    5. .
    6. .
    7. .
    8. ' Formatierung des Gehalts als Währung:
    9. Private Sub DecToCurrString(ByVal sender As Object, ByVal e As ConvertEventArgs) ' DataTable => Anzeige
    10. Try
    11. e.Value = Format(Convert.ToDecimal(e.Value), "c")
    12. Catch
    13. End Try
    14. End Sub
    15. ' ... und zurück
    16. Private Sub CurrStringToDec(ByVal sender As Object, ByVal e As ConvertEventArgs) ' Anzeige => Datenquelle
    17. e.Value = Convert.ToDecimal(e.Value)
    18. End Sub


    Besten Dank !
    Wenn du mit Zahlen rechnest, dann kannst du z.B. ein Wert in einer TextBox oder einem Label nicht leer lassen, es muss mindestens eine 0 drinstehen. Deshalb kommt der Fehler mit Double.
    Füge am besten in die Felder mit denen du rechnest den Standart-Wert 0 rhein.

    Ciao...