Einzelnen Beitrag anzeigen
Alt 04.11.2017, 16:39   #1
bettwurst
Neuer Benutzer
Neuer Benutzer
Standard Mal wieder DataGridView mit filternder Textbox

Liebe VB-Gemeinde,

da ich hier neu bin und „Fremde“ im Internet wie aufm Dorf komisch beliebäugelt werden, stelle ich mich mal kurz vor. Ich bin mittleren Alters, Immobilienverwalter und hatte vor vielen Jahren mal einen bisschen mehr als ein Grundkurs in VB. Nun möchte ich für die Arbeit ein Programm basteln, das mir erst mal folgendes erledigen soll:

Wie schon im Betreff zu lesen, geht es mal wieder um eine DataGridview mit einer filternden Textbox:
- Einlesen einer Excel-Tabelle in ein DataGridview – das habe ich soweit auch schon hinbekommen
- Anzeigen der Tabelle und Autoresize –geht auch
- Filterung der Tabelle mit bis zu zwei Textboxen oder irgendwas, womit es geht
- Filterung nach zuerst nach Namen, wenn das nicht reicht anschließend
- Filterung nach Vertragsnummer und wenn das auch nicht reicht noch

Am Ende sollte bestenfalls nur noch ein Eintrag aus der Tabelle zu sehen sein um die Kreditorennummer abzulesen.
An der Filterung scheitere ich leider. Ich habe schon einiges an Seiten gelesen und alles Mögliche versucht. Daraus kamen z.B. folgende Fehlermeldungen (die erste ist mit dem angefügten Code):
- Syntaxfehler: Fehlender Operand nach dem Operator ''7%''.
- Die Operation 'Like' kann nicht an System.Double und System.String durchgeführt werden.

Versuche ich da zwei Dinge zu verbinden, die man nicht verbinden kann? Ich habs auch schon mit bindingsource versucht, aber das krieg ich irgendwie auch nicht hin. Ich bräuchte mal einen genaueren Tipp, nicht mal die Lösung. Meine VB-Kenntnisse sind alt und löchrig…

Wenn das gelöst ist, poste ich auch gerne den Code nochmal für nachfolgende Generationen. Wobei das nur ein Zwischenziel ist. Glaube aber, dass ich danach alleine weiter komme. Im Übrigen überflüssige Dim's ingnorieren. Die sind aus gescheiterten Versuchen noch übrig. Ich schreibs zur Übung nochmal neu, wenn ich weiß, wie es geht.

Code:

Public Class Form1

    WithEvents bsData As New BindingSource
    Dim DtSet As System.Data.DataTable
    Dim dt As New DataTable
    Dim dv As New DataView

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

        Dim MyConnection As System.Data.OleDb.OleDbConnection
        Dim MyCommand As System.Data.OleDb.OleDbDataAdapter

        MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ace.OLEDB.12.0;Data Source='d:gfzuzu.xls';Extended Properties=Excel 12.0;")
        MyCommand = New System.Data.OleDb.OleDbDataAdapter("select [Konto], [Beschriftung], [Straße], [Vertragsnummer] from [Sheet1$]", MyConnection)
        MyCommand.TableMappings.Add("Table", "TestTable")
        DtSet = New System.Data.DataTable

        MyCommand.Fill(DtSet)
        dt = DtSet
        DataGridView1.DataSource = DtSet
        DataGridView1.AutoResizeColumns()
        MyConnection.Close()

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        Dim dv_kunde As New DataView
        Dim bs = New BindingSource
        Dim s As String

        dv = New DataView(DtSet)
        s = TextBox1.Text
        dv_kunde = New DataView(DtSet)
        dv_kunde.RowFilter = "Konto '" & TextBox1.Text & "%'"
        DataGridView1.DataSource = dv

    End Sub
End Class
bettwurst ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten