Thema: Kundenliste

Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#64

AW: Kundenliste

  Alt 20. Apr 2017, 07:58
Blätter mal ein zwei Seiten zurück. Da haben Hobbycoder (meine ich) und ich dich schon mehrfach darauf hingewiesen, dass genau das passieren wird mit dem Löschen und auch warum. Darüberhinaus haben wir auch Lösungsansätze genannt. Fasse aber nochmal zusammen:

Hintergrund. Du löschst das aus der CustomerList. Dann rufst du SaveToDB auf, dabei werden alle Einträge der CustomerList entweder neu "Inserted" (wenn ID=-1) oder "Upgedated". Aber was passiert mit Einträgen die nicht mehr in der CustomerList sind, da gelöscht? Natürlich nix.

Mögliche Lösungsmöglichkeiten (s.o.):
a) Beim Delete der CutomerList den Datensatz gleich in der DB mit löschen

b) Bei SaveToDB erstmal einen Teil einbauen, der alle Datensätze in der Db löscht, bevor SaveToDB dann wie gehabt ausgeführt wird.

c) Eine zweite Liste ala DeletedCustomers führen (innerhalb der CustmerList Klasse?) und beim Deleten eines Customers diesen (oder seine ID) da eintragen, bevor er aus der eigentlichen CustomerList gelöscht wird. Bei SaveToDB zunächst wie gehabt vorgehen, dann für alle Elemente in DeletedCustomers ein Delete-Statement an die DB schicken.

d) Dem CustomerObjekt eine neue Eigenschaft "Status" oder so mitgeben, die (nur als Beispiel) beim Laden erst mal auf 0 gesetzt wird. Wird der Cutomer bearbeitet (oder neu angelegt) auf 1 setzen, wird er gelöscht auf -1 setzen. Dann in SaveToDG erst gucken ist Status 0 - nichts machen. Ist Status -1 - Delete Statement absetzen, ist Status 1 - schauen ist ID-1 - Insert Statement, sonst Update Statement.
Das heißt natürlich auch, dass ein Custumer in der CustomerList nicht mehr gelöscht wird, sondern nur sein Status auf -1 gesetzt wird.


a) b) und c) sind am einfachsten umzusetzen, b) ist aber mMn am Besten, weil beim speichern nicht immer alle Datensätze in die DB geschrieben werden, nur die, wo sich was ändert. Das macht SavToDB viel schneller. (Warnung: Dabei sind als Folge aber die CustomerList und die ListView ggf. nicht mehr synchron!!!).
Ralph

Geändert von Jumpy (20. Apr 2017 um 08:04 Uhr)
  Mit Zitat antworten Zitat