DataView in Access Datenbank speichern

  • VB.NET

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

    DataView in Access Datenbank speichern

    Hallo,
    ich versuche jetzt schon mehrere Tage ein Problem zu lösen.
    Ich habe eine Access Datenbank Tabelle.
    Diese zeige ich in einen DataGridView an.
    ich möchte nicht alle Datensätze im DGV anzeigen.
    In einer Textbox kann ich verschiedene "Untergruppen" als Kriterien angeben.

    Ich habe das DGV versucht auf verschiedenen Wegen mit Daten zu füllen.

    1. Das DGV mit einem DataSet verbinden.
    Das geht, dann kann ich aber die Datensätze nicht Filtern.

    2. das DGV mit einem Dataview binden
    Das geht auch, dann kann ich die geänderten Daten aber nicht mehr zurück in die Access Datenbank sichern.

    Bin ich da jetzt total auf dem Holzweg?
    Kann man ein DataSet nicht zur Laufzeit filtern?
    Kann man ein Dataview nicht speichern?


    Wenn jemand ein paar gute Tips hat wie ich weiter komme, immer her damit.
    Wie kommen den überhaupt deine Daten in dein DataSet bzw. DataTable?

    Wenn du nicht alles angezeigt bekommen möchtest, frag halt nicht alles ab sondern nur das, was deine Kriterien erfüllt.

    Was ist bei dir ein DataView? Meinst du evtl. ein DataGridView? Was genau sill dort wo gespeichert werden? Für gewöhnlich wird ein DGV nicht gespeichert sondern nur die Daten die es anzeigt.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @frifri
    Ich glaube, Du verwendest nicht das Dataset, sondern eine Tabelle im Dataset.
    Die solltest Du nicht direkt an das DataGridView stöpseln, sondern an eine BindingSource.
    Diese Bindingsource gibst Du für das DGV dann als Datasource an.
    Und nun der Trick:
    Die Bindingsource hat eine Property Filter.
    Damit kannst Du Deine Daten beliebig aufbereiten.
    Ich blick immer noch nicht durch

    VB.NET-Quellcode

    1. Dim dgv1dset As New DataSet
    2. Dim dgv1da As New OleDb.OleDbDataAdapter
    3. Dim tableName As String = "kk"
    4. Dim dgv1dv As DataView
    5. Dim dgv1dt As DataTable
    6. Dim dgv1bs As New BindingSource()
    7. Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(dgv1da)


    VB.NET-Quellcode

    1. ' SelectCommand erstellen welches die "Select-Abfrage" gegen die Datenbank beinhaltet
    2. cmdDB2.CommandText = "SELECT * FROM Preisänderung"
    3. ' DataAdapter mit dem SelectCommand verbinden
    4. dgv1da.SelectCommand = cmdDB2
    5. ' und mit dem DataAdapter das DataSet füllen
    6. dgv1da.Fill(dgv1dset, tableName)
    7. Me.dgv1bs.DataSource = dgv1dset
    8. ' Daten an das DataGridView binden
    9. '.DataSource = dgv1dset
    10. .DataSource = dgv1bs
    11. .DataMember = tableName


    VB.NET-Quellcode

    1. Private Sub TxtBoxLfrName_KeyDown(sender As Object, e As KeyEventArgs) Handles TxtBoxLfrName.KeyDown
    2. If e.KeyCode = Keys.Return Then
    3. If TxtBoxLfrName.Text = "" Then
    4. Else
    5. Me.dgv1bs.Filter = String.Format("UntergruppenID like '*{0}*'", TxtBoxLfrName.Text)
    6. End If
    7. End If
    8. End Sub


    da wird aber nix gefiltert.
    wenn ich in der TextBox was eingebe läuft das PRG durch den Filter aber es werden immer noch alle Datensätze angezeigt.
    @frifri
    Da scheinen ein paar Grundlagen zu fehlen.
    Schau' Dir einmal die Videos vom @ErfinderDesRades an: Die Vier Views, und arbeite sie auch durch. Du brauchst nicht sehr viel Zeit dafür.
    Ich denke, damit hast Du dann ein Rüstzeug, das Dir viele weitere Stunden des 'Rumprobierens abnimmt.
    Ich habe mir die Videos vom Erfinder angesehen aber weiter geholfen haben die mir nicht.

    Ich habe eine Access Datenbank und die möchte ich in ein DGV laden.
    Beim Start des Programms werden alle Datensätze angezeigt.
    Ich möchte das ganze auch noch selber schreiben, also den Code wie oben gezeigt.
    Während der Laufzeit möchte ich in einer Textbox eine Untergruppe eingeben und im DGV werden dann nur die Datensätze angezeigt, die der Untergruppe entsprechen.
    Wie oben schon geschrieben, wollte ich das ganze über ein DataView realisieren aber da kann ich die geänderten Datensätze nicht wieder zurück in die Access Tabelle schreiben.
    Wenn ich das ganze mit einem Dataset mache kann ich die Anzeige nicht filtern.

    Kann man ein Dataview nicht abspeichern?
    könnte ja sein ist ja nur ein View also vielleicht nur zum ansehen.

    Kann man ein Dataset nicht filtern?
    Ich sag ja, da fehlen Dir GRUNDLAGEN.
    Controls, und so auch das Datagridview, sind für die Darstellung der Daten da.
    Filtern, CRUD-Operationen, Views und dergleichen werden ausschliesslich auf ebene der Datensenke (Access-DB, SQL-DB, XML-DB etc.) vorgenommen.
    Du befindest Dich auf einem Irrweg, den Du vielleicht sogar irgendwie "zum Laufen" bringst.
    Aber Du verbaust Dir zukünftige Wege.
    Den Code selber zu schreiben ist ehrenvoll, aber nicht effizient. Schau' Dir den Code an, der über die Automatiken des Visual Studio generiert wird, insbesondere den Code der Datasets. Dann wirst Du einen Eindruck von den Aufgaben haben, die auf Dich zu kommen, wenn Du wirklich alles selbst Coden willst.
    Mach' Dich mit den Konzepten vertraut, übe sie, und auf einmal wirst Du feststellen, das Deine derzeitige Aufgabenstellung vergleichsweise trivial ist.