Suchen im Datagridview - ungültige Konvertierung von der Zeichenfolge im Typ double

  • VB.NET

Es gibt 51 Antworten in diesem Thema. Der letzte Beitrag () ist von TheRaza.

    Suchen im Datagridview - ungültige Konvertierung von der Zeichenfolge im Typ double

    Hallo liebe Leutz =)

    ich daddel immer noch ein wenig an meinem kleinen DB-Programm rum. Bearbeiten, löschen, speichern funktioniert alles über den Bindingnavigator.

    Nun brauche ich aber auch eine Suchfunktion, welche alle Zellen des DGV durchsucht und nicht nur jeweils eine Spalte oder so.

    Folgenden Code habe ich dazu:


    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Tabelle1BindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles Tabelle1BindingNavigatorSaveItem.Click
    3. Me.Validate()
    4. Me.Tabelle1BindingSource.EndEdit()
    5. Me.TableAdapterManager.UpdateAll(Me.DB07DataSet)
    6. End Sub
    7. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. 'TODO: Diese Codezeile lädt Daten in die Tabelle "DB07DataSet.Tabelle1". Sie können sie bei Bedarf verschieben oder entfernen.
    9. Me.Tabelle1TableAdapter.Fill(Me.DB07DataSet.Tabelle1)
    10. End Sub
    11. Dim Suche As String
    12. Dim z, s As Integer
    13. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles txtSuche.TextChanged
    14. Suche = txtSuche.Text
    15. Try
    16. For z = 0 To DataGridView.Rows.Count - 1
    17. For s = 0 To DataGridView.Columns.Count - 1
    18. If DataGridView.Rows(z).Cells(s).Value = Suche Then
    19. DataGridView.Rows(z).Cells(s).Style.BackColor = Color.PapayaWhip
    20. Else
    21. DataGridView.Rows(z).Cells(s).Style.BackColor = Color.White
    22. End If
    23. Next
    24. Next
    25. Catch ex As Exception
    26. MessageBox.Show(ex.Message)
    27. End Try
    28. End Sub
    29. End Class


    Wenn ich nun etwas in mein Suchfeld eintippe, erhalte ich immer die Meldung:
    Ungültige Konvertierung von der Zeichenfolge im Typ double.

    Kann mir bitte jemand Helfen?

    Viele Grüße :)
    Hi,

    danke für die schnellen Antworten. Mein Code sieht nun wie folgt aus:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub Tabelle1BindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles Tabelle1BindingNavigatorSaveItem.Click
    4. Me.Validate()
    5. Me.Tabelle1BindingSource.EndEdit()
    6. Me.TableAdapterManager.UpdateAll(Me.DB07DataSet)
    7. End Sub
    8. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    9. Me.Tabelle1TableAdapter.Fill(Me.DB07DataSet.Tabelle1)
    10. End Sub
    11. Dim Suche As String
    12. Dim z, s As Integer
    13. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles txtSuche.TextChanged
    14. Suche = txtSuche.Text
    15. For z = 0 To DataGridView.Rows.Count - 1
    16. For s = 0 To DataGridView.Columns.Count - 1
    17. If DataGridView.Rows(z).Cells(s).Value = Suche Then
    18. DataGridView.Rows(z).Cells(s).Style.BackColor = Color.PapayaWhip
    19. Else
    20. DataGridView.Rows(z).Cells(s).Style.BackColor = Color.White
    21. End If
    22. Next
    23. Next
    24. End Sub
    25. End Class


    Allerdings wird mir hier:

    If DataGridView.Rows(z).Cells(s).Value = Suche Then

    folgende Meldung gezeigt:

    Option strict on lässt Operanden des Typs Objekt für den = Operator nicht zu. Verwenden Sie den is-Operator, wenn Sie die Objektidentität testen möchten.

    Ersetze ich das = durch is passiert gar nichts mehr.
    value ist Objekt, dies solltest Du per ToString in einen String konvertieren.
    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!
    welchen Datentyp hat Suche, und welchen Datentyp hat DataGridView.Rows(z).Cells(s).Value

    Das ist eben das Problem der Strict Off - Progger: Dass sie nicht wissen, mit welchen Datentypen sie hantieren - meißt wissense nichtmal, was ein Datentyp ühaupt ist, und dass ein Double eben etwas anneres ist als ein String.
    Danke nochmals für die Antworten in Lichtgeschwindigkeit!!!

    Also Suche habe ich doch als string dimensioniert und zugegeben, welchen Datentyp DataGridView.Rows(z).Cells(s).Value hat weiß ich wirklich nicht. Wo kann ich das denn nachforschen?

    TheRaza schrieb:

    Wo kann ich das denn nachforschen?
    Visual-Studio richtig nutzen

    Haltepunkt setzen, DataGridView.Rows(z).Cells(s).Value markieren, mit shift-F9 die Schnellüberwachung aufrufen.

    vlt. Bildle posten, wenns dich interessiert.

    Ansonsten Don Batisto folgen, unds Thema abhaken bis zum nächsten mal.
    Hi,

    vielen Dank! Jetzt erhalte ich folgende Meldung:

    Option Strict On lässt keine impliziten Konvertierungen von String in Boolean zu.

    VB.NET-Quellcode

    1. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles txtSuche.TextChanged
    2. Suche = txtSuche.Text
    3. For z = 0 To DataGridView.Rows.Count - 1
    4. For s = 0 To DataGridView.Columns.Count - 1
    5. if Cbool(DataGridView.Rows(z).Cells(s).Value.toString) = Suche Then
    6. DataGridView.Rows(z).Cells(s).Style.BackColor = Color.PapayaWhip
    7. Else
    8. DataGridView.Rows(z).Cells(s).Style.BackColor = Color.White
    9. End If
    10. Next
    11. Next
    12. End Sub


    Eine Veränderung, wie oben zu sehen, wurde mir vorgeschlagen und funxt leider auch nicht.
    Ändere es erstmal in ein anderes Event :thumbsup:

    VB.NET-Quellcode

    1. Private Sub src_ButtonClick(sender As Object, e As EventArgs) Handles src.ButtonClick


    Und dann Option Stritc On
    Hatte er nun zwischenzeitlich getan....


    Wenn Du magst, dann erstelle uns mal ein Screenshot :)
    Das hat VB mir so vorgeschlagen und ich habs natürlich ausprobiert ;) Warum das so ist, da fragste den Richtigen ;)

    Wovon wollt ihr nen Screeni? Und was hat es mit src_ButtonClick auf sich? Ist ein normaler Button auch okay?

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    TheRaza schrieb:

    Option Strict On lässt keine impliziten Konvertierungen von String in Boolean zu.
    Es wäre nützlich, wenn Du die Zeile in Deinem Code entsprechend markieren würdest.
    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!
    Endschuldige bitte! =)

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Suche = txtSuche.Text
    3. For z = 0 To DataGridView.Rows.Count - 1
    4. For s = 0 To DataGridView.Columns.Count - 1
    5. [color=#ff00ff] If DataGridView.Rows(z).Cells(s).Value.ToString Then = Suche Then[/color]
    6. DataGridView.Rows(z).Cells(s).Style.BackColor = Color.PapayaWhip
    7. Else
    8. DataGridView.Rows(z).Cells(s).Style.BackColor = Color.White
    9. End If
    10. Next
    11. Next
    12. End Sub

    TheRaza schrieb:

    VB.NET-Quellcode

    1. if Cbool(DataGridView.Rows(z).Cells(s).Value.toString) = Suche Then
    Wie kommst Du denn auf dolch Mist?
    ==>

    VB.NET-Quellcode

    1. If DataGridView.Rows(z).Cells(s).Value.ToString = Suche Then
    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!

    TheRaza schrieb:

    Das mit dem Cbool hat VB mir als Korrektur vorgeschlagen.
    und Du hast Dir nix bei gedacht?
    Oben noch haben wir Objekte und Strings miteinander verglichen. Warum sollte da plötzlich ein Boolean auftauchen?
    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!