Das Objekt muss den Typ Decimal haben

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Marja.

    Das Objekt muss den Typ Decimal haben

    Hallo zusammen,

    ich hoffe ihr könnt mir weiterhelfen.

    Ich fülle zur Laufzeit ein DataGridView mit Daten. u.a. Aktionsnummer.
    Manchmal kommt es aber auch vor, das keine Aktionsnummer vorhanden sind und dann ist die Spalte leer bzw. mit "-" gefüllt.

    Nun, wenn ich sortieren möchte zur Laufzeit, also dann auf die Kopfzeile der Spalte klicken, erhalte ich die Meldung "Das Objekt muss den Typ Decimal haben".

    Wie kann ich der Spalte sagen, das das ein Decimal Spalte ist und reicht das auch, oder habe ich noch etwas anderes übersehen?

    Gruß
    Marja

    Marja schrieb:

    "Das Objekt muss den Typ Decimal haben"
    Welcher Typ kommt denn da an?
    Hast Du einen eigenen Sorter?
    Da musst Du den Nicht-Decimal-Typ geeignet abfangen.
    Poste mal den Code der Prozedur, wo dieser Fehler auftritt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Erstmal Danke für Eure Antworten.
    Die DataGridView wird zur Laufzeit des Programms erzeugt bzw. gefüllt.

    Ein Auszug aus dem Code, bei dem das DGV gefüllt wird.

    Quellcode

    1. Dim da As New OracleDataAdapter(selStr, con)
    2. Try
    3. con.Open()
    4. da.Fill(ds, "hwe")
    5. con.Close()
    6. con.Dispose()
    7. Catch ex As Exception
    8. MessageBox.Show(ex.Message, MyAppName)
    9. End Try
    10. Dim dt As DataTable = ds.Tables("hwe")
    11. With dgv_open
    12. .Columns.Clear()
    13. .Font = New Font("Arial", 8.25)
    14. 'Spalten anlegen
    15. .Columns.Add("Spalte1", "HWE_ID")
    16. .Columns.Add("Spalte2", "MAILS_ID")
    17. .Columns.Add("Spalte3", "SUBSCRIBER_NO")
    18. .Columns.Add("Spalte4", "BAN")
    19. .Columns.Add("Spalte5", "SAPNR")
    20. .Columns.Add("Spalte6", "AKTION_NR")
    21. .Columns.Add("Spalte7", "ERF_DAT")
    22. .Columns.Add("Spalte8", "IMPORTIERT")
    23. 'Spaltenbreite
    24. .Columns(0).Width = 100 'HWE_ID
    25. .Columns(1).Width = 100 'MAILS_ID
    26. .Columns(2).Width = 100 'SUBSCRIBER_NO
    27. .Columns(3).Width = 100 'BAN
    28. .Columns(4).Width = 150 'SAPNR
    29. .Columns(5).Width = 100 'AKTION_NR
    30. .Columns(6).Width = 100 'ERF_DAT
    31. .Columns(7).Width = 100 'IMPORTIERT
    32. End With
    33. For Each rw As DataRow In dt.Rows
    34. With dgv_open
    35. .Rows.Add(rw("HWE_ID"), _
    36. IIf(IsDBNull(rw("MAILS_ID")), "-", rw("MAILS_ID")), _
    37. IIf(IsDBNull(rw("SUBSCRIBER_NO")), "-", rw("SUBSCRIBER_NO")), _
    38. IIf(IsDBNull(rw("BAN")), "-", rw("BAN")), _
    39. IIf(IsDBNull(rw("SAPNR")), "-", rw("SAPNR")), _
    40. IIf(IsDBNull(rw("AKTION_NR")), "0", rw("AKTION_NR")), _
    41. IIf(IsDBNull(rw("ERF_DAT")), "-", rw("ERF_DAT")), _
    42. IIf(IsDBNull(rw("IMPORTIERT")), "-", rw("IMPORTIERT")))
    43. End With
    44. Next rw
    45. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    46. 'Komplette Zeile markieren
    47. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    48. dgv_open.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    49. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    50. 'Aktuelle Anzahl der Datenstze
    51. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    52. Me.lbl_Sum.Text = "Anzahl: " & Me.dgv_open.Rows.Count
    53. Me.dgv_open.ClearSelection()

    @Marja In welcher Zeile kommt die Exception?
    ===============
    Ersetze IIf durch If.

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Marja Gibt es dazu eine Zeile in Deinem Code, wo dieser Fehler auftritt?
    Diese und die Umgebung davon hätten wir gern gesehen. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!