Announcement

Collapse
No announcement yet.

gelöschte Zeile in einer Tabelle wird nicht der Datenbank übernommen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • gelöschte Zeile in einer Tabelle wird nicht der Datenbank übernommen

    Hallo

    wir lassen uns in einem DataGrid Daten aus einer Access-DB anzeigen. Diese Daten werden zunächst in eine DataTable geladen und anschließend mit einer DataView aus der Tabelle selectiert und als DataSource dem DataGrid zugewiesen. Wird nun eine Zeile gelöscht und anschließend eine Update gemacht, so verbleibt die im DataGrid ( und damit in der DataTable ) erfolgreich gelöschte Zeile in der Access-DB erhalten.
    Was ist zu tun, damit auch in der DB die Zeile rausfliegt?
    Oder sollte das funktionieren?

    Access-DB --> select * from ... --> DataTable --> DataView.Select(...) --> DataGrid.DataSource = DataView!

    Im DataGrid wird eine Zeile angewählt --> BindingManager liefert den Datensatz in der DataTable --> DataTable.Delete[] oder DataTable.RemoveAt[] --> DataAdapter.Update --> Kein Löschen der Zeile in der Access-DB ????

    Was fehlt noch oder was ist unser Fehler?
    Vielleicht kann uns jemand weiterhelfen.

    Schon mal Danke

    HS

  • #2
    Du musst auch ein Commit setzen. Schau mal unter Transaktionen nach. (Rollback, BeginTrans, Commit)

    Christia

    Comment


    • #3
      Danke schon mal

      wir werden uns das anschauen...

      H

      Comment


      • #4
        Wie löscht Ihr die Row? Lies mal in der Doku es gibt einmal eine Funktion die die Zeile zum löschen markiert was dann auch zum Delete in der Db beim Update führt und einmal direkt .Delete() was die Zeile aus dem Dataset löscht -> dann müstest du sie manuell aus der DB löschen

        Comment


        • #5
          Sorry hab eben erst oben gelesen. RemoveAt oder Remove löscht die DataRow sofort im Speicher des DataSet und Delete markiert Sie zum löschen. Du kannst auch mal die GetChanges() Methode des DataSet nutzen zum anzeigen der Änderungen

          Comment


          • #6
            Hallo Harald

            versuche es mal damit :

            <PRE>

            DataRow row = dataTable.Rows[dataGrid... // Index was selected //);
            row.Delete();
            <BR>
            try
            {
            dataAdapter.Update( dataSet,"Tablename" );
            dataSet.AcceptChanges();
            // Aktualisiere hier dein dataGrid
            // gebe Message aus
            }
            catch ( OleDbException ex )
            {
            dataSet.RejectChanges();
            MessageBox.Show( "ERROR IN .. " + ex.ToString() );
            Application.DoEvents();
            }
            </PRE>
            <BR>
            ich hoffe es hilft dir weiter.
            <BR>
            andr

            Comment

            Working...
            X