Datagridview Rowfilter mit Datum

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Semiconductor.

    Datagridview Rowfilter mit Datum

    huhu liebe Gemeinde :)

    Ich stecke gerade an folgendem Problem fest:

    Ich habe eine Datagridview, daran ist eine datatable mit mehreren Rows geknüpft und mit einer Spalte mit Datum.

    Hinzugefügt wird das Datum folgendermaßen an die datatable:

    VB.NET-Quellcode

    1. New Date(DateTime.Now.ToString("yyyy"), DateTime.Now.ToString("MM"), DateTime.Now.ToString("dd"), DateTime.Now.ToString("HH"), DateTime.Now.ToString("mm"), DateTime.Now.ToString("ss"))


    Die Formatierung der Datagridview gestaltet sich folgendermaßen:

    VB.NET-Quellcode

    1. With DataGridView1
    2. .Columns(14).DefaultCellStyle.Format = "dd/MM/yyyy HH:mm:ss"
    3. End With


    Ich möchte versuchen, die datatable nach "HEUTE" und "GESTERN" zu filtern.

    Mein Ansatz für "Heute" gestaltet sich folgendermaßen:

    VB.NET-Quellcode

    1. Dim filternurheute as string = "[Datumspalte] LIKE '" + datetime.now + "'" ''' ????
    2. dv = New DataView(ds.Tables(0), filternurheute, "Datum", DataViewRowState.CurrentRows)
    3. DataGridView1.DataSource = dv
    4. DataGridView1.Sort(DataGridView1.Columns(14), ListSortDirection.Descending)


    Wie es mit "Gestern" funktionieren soll, weiß ich noch nicht genau.
    Leider scheitere ich kläglich, wie ich einstellen könnte, das Datum bei exakt 1 Tagesdifferenz sowie 2 Tagesdifferenz richtig zu filtern. Ideal wäre es sogar Sekundengenau, da mein Datum nicht nur Jahre, Monate und Tage enthält, sondern auch Minuten und Sekunden.

    Das Filtern von reinen Strings und Integers ist kein Problem. Hier ein Beispiel für Integer

    VB.NET-Quellcode

    1. Dim filterzwei as string = " AND [X-Wert] > = 0 AND [X-Wert] < 5000"


    Vielen Dank und mfg
    Schalte zwischen dein DGV und den Daten eine Bindingsource und verwende dort die Filtereigenschaft...
    Siehe näheres zur Filterung von Datumse in der folgenden Verlinkung:
    stackoverflow.com/questions/21…date-in-visual-basic-2012

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

    EDIT: KORREKTUR

    Ich habe erstmal versucht, die MYSQL-Datenbank mittels Bindingsource anzubinden, allerdings habe ich hier ein Problem.

    Anscheinend habe ich ein Problem mit der Variable con, weil er die "Fehler" MEssagebox zurückgibt und ohne Try-Catch passert gar nichts...


    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. GetData("select * from tabelle")
    3. End Sub
    4. Private Sub GetData(ByVal selectCommand As String)
    5. Dim connectionString As String = "Server=XXX.XXX.XXX; User Id=username1; Password=userpasswort; Database=datenbank04"
    6. Me.dataAdapter = New SqlDataAdapter(selectCommand, connectionString)
    7. Dim commandBuilder As New SqlCommandBuilder(Me.dataAdapter)
    8. Dim table As New DataTable()
    9. table.Locale = System.Globalization.CultureInfo.InvariantCulture
    10. Me.dataAdapter.Fill(table)
    11. Me.bindingSource1.DataSource = table
    12. Me.DataGridView1.AutoResizeColumns(
    13. DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader)
    14. End Sub

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

    Habs vermurkst, hier ein Versuch,

    Datagridview bekommt schon etwas angezeigt, aber nicht die Datenbank:

    VB.NET-Quellcode

    1. Public Sub dataview()
    2. DataGridView1.DataSource = ""
    3. Dim bindingSource2 As New BindingSource()
    4. Dim db_con As New MySqlConnection
    5. db_con.ConnectionString = "data source=xxx.xxx.xxx;database=tabelle04;user id=username04;password=passwort04"
    6. Dim cmd As New MySqlCommand("SELECT * FROM tabelle", db_con)
    7. With Me.DataGridView1
    8. .AutoGenerateColumns = True
    9. bindingSource2.DataSource = cmd
    10. .DataSource = bindingSource2
    11. .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
    12. .BorderStyle = BorderStyle.Fixed3D
    13. .EditMode = DataGridViewEditMode.EditOnEnter
    14. End With
    15. DataGridView1.DataSource = bindingSource2
    16. End Sub
    Das Binding über den Designer kann ich schlecht anwenden, wenn dynamische Datagridviews erstellt werden.

    Das Problem ist:

    Ich kann direkt auf die Datagridview die MySQL Datenbank laden.

    Sobald ich das per Binding versuche, bekomme ich die Fehlermeldung, obwohl ich 1:1 den selben Script anwende. D.h. Anmeldedaten sind im connectionstring identisch...

    Remote Access ist auf der MySQL Datenbank aktiv..


    Exception startet bei "Me.dataAdapter.Fill(table)"


    Zusätzliche Informationen: Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: Named Pipes Provider, error: 40 - Verbindung mit SQL Server konnte nicht geöffnet werden)