Entwickler-Ecke
Datenbanken - Problem mit automatischen übernehmen von Änderungen in DB
sekai - So 08.02.09 15:20
Titel: Problem mit automatischen übernehmen von Änderungen in DB
Hallo,
ich habe folgendes Problem:
nach dem Einbinden einer Access Datenbank in Delphi 7 (in eine Kundenstammdaten-Kartei),
werden Änderungen und neue Eingaben automatisch in die Datenbank übergeben und gespeichert.
Da dies aber von meiner Seite her nicht geplant ist (Quelltext mäßig), vermute ich, dass es 'irgendeine' Einstellung
in Delphi gibt, die dafür sorgt, dass die Datenbank automatisch erneuert wird, sobald eine
Änderung vorgenommen wird.
Momentan greife ich über eine ADOConnection auf die Datenbank zu, über eine ADODataSet-Abfrage auf
spezielle Tabellen und einer dazugehörigen DataSource.
Die Anzeige der Felder erfolgt an Hand von DBEdit-Felder.
Daher meine Bitte, ob mir vielleicht jemand sagen kann, an welcher Einstellung das Problem liegen könnte.
Vielen Dank im Voraus.
jaenicke - So 08.02.09 16:52
Hallo und :welcome: hier im Forum!
Ich würde sagen, genau dafür sind die visuellen DB-Komponenten da. Eben damit man das nicht selbst in die DB eintragen muss. Wenn du an einem Eintrag etwas änderst, dann ginge diese Änderung ja verloren sobald du zu einem anderen Eintrag wechselst, wenn das nicht übernommen würde.
Wie genau soll das denn ablaufen? Mehrere Einträge ändern und erst dann in die Datenbank übernehmen oder wieder verwerfen?
Delete - So 08.02.09 17:52
Von ADO habe ich leider nicht die meiste Ahnung, aber schau mal, was man an der Transaktionssteuerung so einstellen kann.
sekai - So 08.02.09 19:30
Danke, Jaenicke.
Und genau darum geht's.
Wenn ich einen Kunden habe und bei ihm zum Beispiel die Adresse ändern möchte, dann ist es ein Eingriff in einen bestehenden Datensatz, so dass Daten verloren gehen könnten.
Also möchte ich, bevor der Datensatz endgültig in der Datenbank aktualisiert / gespeichert wird eine Bestättigung erhalten, dass die Änderung auch wirklich gewünscht und übernommen werden soll.
Um das mal mit Grafiken zu unterstützen:
Mal vom Design abgesehen ist das in Etwa das Prinzip, ich habe eine grafische Oberfläche für den Bediener.
Nun möchte dieser den Kundennamen auf "Musterfrau" ändern, dazu geht er auf 'Speichern', was folgende Situation hervorbringt:
Jetzt stellt er aber fest, dass aus welchen Gründen auch immer, die Änderung nicht vorgenommen werden soll,
und betättigt die Abbruch funktion:
Die aber nicht funktioniert, da Änderungen ohne Speichern übernommen werden und somit eine Speichern-Funktion 'überflüßig' gemacht wird.
Das würde ich gerne abstellen und lieber den manuellen Weg gehen.
----------------------------------------------------------------------------------
Hallo DeddyH,
mit der Transaktionssteuerung habe ich noch keinerlei Erfahrungen gesammelt.
Aber ich schau mal, ob ich damit ein Stück nach vorne komme.
Danke.
Edit: Leider nicht geklappt, aber danke!
Delete - So 08.02.09 20:32
Leider weiß ich nicht genau, wie Du auf die DB zugreifst (über TADODataset?). Wenn ja, gibt es da ja so schöne Ereignisse (BeforePost), wo Du noch Einfluss nehmen könntest.
sekai - Fr 13.02.09 14:52
Hallo DeddyH,
ADODataSet ist richtig, hab ich im ersten Post sogar gesagt.
Ich vermute mit deinem BeforePost, bin ich auf dem richtigen Weg, nur leider fehlt mir der entscheidende Hinweis,
da es leider nur mit einem Abort; nicht getan ist.... :(
Hast du vielleicht einen Tipp für mich?
Delete - Sa 14.02.09 12:47
Wie ich schon sagte bin ich nicht der ADO-Experte. Aber es müsste doch im Prinzip so funktionieren:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.ADODataset1BeforePost(DataSet: TDataSet); begin if MessageBox(Handle,'Änderungen speichern?','Bestätigen',MB_YESNO or MB_ICONQUESTION) <> idYes then Abort; end; |
aladin60 - So 15.02.09 19:41
Schau mal in der Delphi-Hilfe nach TADODataSet.Cancel....
Bernd.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!