AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# DataAdapter.Update + RejectChanges: Verständnisproblem
Thema durchsuchen
Ansicht
Themen-Optionen

DataAdapter.Update + RejectChanges: Verständnisproblem

Ein Thema von Jürgen Thomas · begonnen am 17. Okt 2006 · letzter Beitrag vom 17. Okt 2006
 
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

DataAdapter.Update + RejectChanges: Verständnisproblem

  Alt 17. Okt 2006, 12:56
Datenbank: Firebird • Version: 2.0 RC4 • Zugriff über: Firebird NET Provider 2.0 RC1 von #D 2.0 aus
Hallo,

hurra, ich komme voran: Ich kann jetzt Daten erfassen (mit automatischer Konvertierung und vielfacher Analyse aus HTML-Dateien), speichern, einlesen und ändern mit folgenden Konstruktionen (stark verkürzt dargestellt):
Code:
//  Typisiertes DataSet ds
dataFactory = sc.DbProviderFactories.GetFactory("FirebirdClient");
conn = dataFactory.CreateConnection();
da = dataFactory.CreateDataAdapter();
da.SelectCommand = dataFactory.CreateCommand();
da.SelectCommand.CommandText = "SELECT * FROM " + tbl.TableName;
cmdb = dataFactory.CreateCommandBuilder();
cmdb.DataAdapter = da;
da.Fill(ds, tbl.TableName);
da.InsertCommand = cmdb.GetInsertCommand();
Das funktioniert jetzt, wie gesagt:
  • 1. HTML-Datei analysieren
    2. Daten in die Haupttabelle tbl des Dataset eintragen
    3. zusätzliche Informationen prüfen, mit anderen Tabellen vergleichen und ggf. ändern
    4. Daten aus der Haupttabelle tbl in der Datenbank speichern über da.Update(tbl); Achtung: erst jetzt soll wirklich gespeichert werden!!!
Mein Problem ist nun: Die Schritte in 3. - prüfen, vergleichen, ändern - werden in einem eigenen Formular ausgeführt; Änderungen, die dabei vorgenommen werden, sollten mit AcceptChanges() bestätigt oder mit RejectChanges() zurückgenommen werden können. Aber dies wirkt sich anders aus als gewünscht:
  • Wenn ich AcceptChanges() aufrufe, ohne die Daten vorher in die Datenbank übertragen, werden alle Neuaufnahmen als erledigt betrachtet. Wenn ich also eine manuelle Änderung bestätige, werden alle Neuaufnahmen nicht mehr gespeichert.
  • Wenn ich RejectChanges() aufrufe, wird nicht nur eine manuelle Änderung verworfen, sondern auch jede vorherige Neuaufnahme.
Wie kann ich das von mir gewünschte Verhalten erreichen:
  • den Status nach Abschluss von Punkt 2 im Dataset festhalten
  • spätere Änderungen bestätigen oder verwerfen
  • die vollständige Tabelle vom Dataset in die Datenbank übertragen
Danke für Tipps! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz