Frage zu filtern in einer Combobox

  • VB.NET

Es gibt 29 Antworten in diesem Thema. Der letzte Beitrag () ist von mhc2004.

    hmmm......ich hatte mir die Klauseln angeschaut, nur bekomme ich eine Fehlermeldung, das meine Form nicht angezeigt werden kann, weil: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    VB.NET-Quellcode

    1. Private sql_date As String = "SELECT DISTINCT Ausgangsdatum FROM Set1 GROUP BY Ausgangsdatum WHERE Wert='" & cboDatum_filtern.SelectedItem.ToString & "'"


    In der Hilfe steht dazu das ich eine Objektinstanz mit dem Schlüsselwort "NEW" erstellen muss. Liegt das daran das die bezeichnung der Combobox ausserhalb der SUB liegt?
    Aber trotz dem ich die Bezeichnung nun in die Sub mit reingenommen habe, bekomme ich die Fehlermeldung. Jetzt müsste es doch funktionieren?Wieso muss ich trotzdem ein Objekt mit New erstellen und vor allem welches... ?(

    VB.NET-Quellcode

    1. Private Sub LOAD_Table()
    2. Dim sql_date As String = "SELECT DISTINCT Ausgangsdatum FROM Set1 GROUP BY Ausgangsdatum WHERE Wert='" & Me.cboDatum_filtern.SelectedItem.ToString & "'"
    3. Dim cmd_date As New OleDbCommand(sql_date, conn)
    4. Dim da_date As New OleDbDataAdapter(cmd_date)
    5. Dim ds_date As New DataSet
    6. Try
    7. 'Verbindung zur Datenbank öffnen
    8. conn.Open()
    9. 'Inhalte des Dataset zunächst löschen
    10. ds.Clear()
    11. ds_date.Clear()
    12. 'Dataset mit der Tabelle Users füllenda_date.Fill(ds_date, "Set1")
    13. da.Fill(ds, "Set1")
    14. 'Datagrid anbindenDataGrid1.SetDataBinding(ds, "Set1")
    15. 'Combobox anbinden
    16. cboUsername.DataSource = dscboUsername.DisplayMember = "Set1.Dosennummer"
    17. cboDatum_filtern.DataSource = ds_date
    18. cboDatum_filtern.DisplayMember = "Set1.Ausgangsdatum"
    19. txtStecker.Text = ""
    20. cboUsername.Text = ""
    21. txtBuchse.Text = ""Catch ex As OleDbException
    22. MessageBox.Show(ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    23. Finally
    24. 'Verbindung zur Datenbank auf jeden Fall wieder schließen
    25. conn.Close()End Try
    26. End Sub
    das was du machst kann ja auch gar nicht funktionieren du nutzt einen eintrag deiner combobox bevor du sie gefüllt hast
    ich hatte dir gepostet das du diesen adapter dann für dein grid nutzen sollst und nicht für deine combobox
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    hmm....nun bekomme ich einen Syntaxfehler...Syntaxfehler (fehlender Operator) in Abfrageausdruck 'Ausgangsdatum WHERE Wert='System.Data.DataRowView''.

    VB.NET-Quellcode

    1. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    2. Dim sql_date_such As String = "SELECT DISTINCT Ausgangsdatum FROM Set1 GROUP BY Ausgangsdatum WHERE Wert='" & cboDatum_filtern.SelectedItem.ToString & "'"Dim cmd_date_such As New OleDbCommand(sql_date_such, conn)
    3. Dim da_date_such As New OleDbDataAdapter(cmd_date_such)Dim ds_date_such As New DataSet
    4. ds_date_such.Clear()da_date_such.Fill(ds_date_such, "Set1")
    5. cboDatum_filtern.DataSource = ds_date_such
    6. cboDatum_filtern.DisplayMember = "Set1.Ausgangsdatum"
    7. End Sub


    Auch wenn ich erst mal Werte in die ComboBox eintragen lasse, dann einen Wert auswähle und danach auf den Button klicke.
    sry aber mitdenken ist angebracht
    du sollst dein datagrid mit der sqlabfrage befüllen
    p.s. ich glaube dir fehlen da noch ein paar grundlegende kenntnisse über das befüllen von einem datagrid schau dir das dann bitte mal an
    besonders wie man das codeseitig dynamisch befüllt
    du versuchst mit deinem code immer noch deine combobox zu befüllen
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Ich versuche mit zu denken, nur fällt mir das ziemlich schwer. :S Ich weiß das ich hier iwo etwas anders machen muss,oder?

    VB.NET-Quellcode

    1. Dim sql_date_such As String = "SELECT DISTINCT Ausgangsdatum FROM Set1 GROUP BY Ausgangsdatum WHERE Wert='" & DataGrid1.irgendwas??? & "'"
    ab morgen bin ich erstmal weg ;)

    du sollst den eintrag der combobox nutzen so wie du es richtig gemacht hast
    und den dataadapter den du mit dieser sqlabfrage fütterst sollst du an den dataset für dein grid übergeben so wie du es auch schon richtig für deine combobox gemacht hattest
    damit füllst du die datasource für dein grid und gibs es an dein grid ... fertig die grundlagen sind da du musst nur noch deine ausführung dahingehend ordnen udn schau dir mal galilleo openbooks oder eine andere seite die du bei google findest wie man in vb.net ein datagrid befüllt dann wird dir vielleicht einiges klarer
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    So um mal meinen Erfolg auf zu zeigen poste ich das mal, ist sicher nichts großes,aber für mich schon. :D

    Datenbankverbindung und Füllung der cboDate_Filtern Combobox mit immer nur einem Eintrag des Datums der Tabelle.

    VB.NET-Quellcode

    1. Private dbpath As String = System.IO.Path.Combine(Application.StartupPath, "UserDB.mdb")
    2. Private conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbpath & ";")
    3. Private sql_date As String = "SELECT DISTINCT Ausgangsdatum FROM Set1 GROUP BY Ausgangsdatum"
    4. Private sql As String = "SELECT * FROM Set1"
    5. Private cmd_date As New OleDbCommand(sql_date, conn)
    6. Private cmd As New OleDbCommand(sql, conn)
    7. Private da_date As New OleDbDataAdapter(cmd_date)
    8. Private da As New OleDbDataAdapter(cmd)
    9. Private ds_date As New DataSet
    10. Private ds As New DataSetPrivate Sub LOAD_Table()
    11. Try
    12. 'Verbindung zur Datenbank öffnen
    13. conn.Open()
    14. 'Inhalte des Dataset zunächst löschen
    15. ds.Clear()
    16. ds_date.Clear()
    17. 'Dataset mit der Tabelle Users füllen
    18. da_date.Fill(ds_date, "Set1")
    19. da.Fill(ds, "Set1")
    20. 'Datagrid anbinden
    21. DataGrid1.SetDataBinding(ds, "Set1")
    22. 'ComboBox anbinden
    23. cboUsername.DataSource = ds
    24. cboUsername.DisplayMember = "Set1.Dosennummer"
    25. cboDatum_filtern.DataSource = ds_date
    26. cboDatum_filtern.DisplayMember = "Set1.Ausgangsdatum"
    27. Form2.cboFiltern.DataSource = ds_date
    28. Form2.cboFiltern.DisplayMember = "Set1.Ausgangsdatum"
    29. txtStecker.Text = ""
    30. cboUsername.Text = ""
    31. txtBuchse.Text = ""Catch ex As OleDbException
    32. MessageBox.Show(ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    33. Finally
    34. 'Verbindung zur Datenbank auf jeden Fall wieder schließen
    35. conn.Close()End Try
    36. End Sub

    Und die Filterfunktion....

    VB.NET-Quellcode

    1. Sub filtern()
    2. If RadioButton1.Checked = True Then
    3. Dim dv As New DataView(ds.Tables("Set1"))
    4. dv.RowFilter = "Ausgangsdatum = " & "'" & cboDatum_filtern.Text & "'"
    5. DataGrid1.DataSource = dv
    6. End IfEnd Sub

    Und es funktioniert..... :thumbsup:
    Danke Manü für den Weg!!! :thumbup: