Entwickler-Ecke
Datenbanken - Warum löscht er den Datensatz ?
bis11 - So 18.08.02 21:55
Titel: Warum löscht er den Datensatz ?
Hi,
ich bin es schon wieder. Ich habe eine Anwendung mit folgenden Kompo's :
TQuery,TTable,TDBGrid,TDataSource,TDBNavigator
Die Datenbank wird mittels SQL erstellt und verwaltet und im TDBGrid angezeigt. Die TTable-Kompo habe ich nur dazu, um die Daten DBEdit-feldern anzuzeigen und einzugeben oder zu ändern.
Jetzt aber zum eigentlichen Problem, wenn ich den Klick auf den Delete-Button vom Navigator abfange, wird immer der aktuell ausgewählete Datensatz aus dem DBGrid gelöscht. Dann erscheint mein Dialog zum löschen eines Datensatzes. Ist dieser ausgeführt, löscht er mir den Datensatz den ich eingegeben habe. Nach dieser Löschung erscheint der Datensatz wieder, der vor dem erscheinen des Dialogs aus dem TDBGrid verschwunden ist. Warum passiert das und wie kann ich das unterbinden ?
Steffer - So 18.08.02 23:04
Der Navigator ist über die Datasource mit einem Dataset (ttable oder tquery) verbunden.
Beim löschen wird das aktuelle Datensatz dieses Datasets gelöscht.
Wenn das nicht geschieht, hast du imho irgendwelchen Code dazwischen, der den Cursor nochmals in deiner DB verschiebt.
bis11 - Mo 19.08.02 06:28
Das ist richtig, der Navigator ist über die Datasource mit dem Dataset TQuery verbunden. Nur ich möchte das gerne, das er erst etwas löscht, nachdem der User seine Eingabe gemacht hat in dem Dialog der aufgerufen wird über den Delete-Button im Navigator. Es soll vorher nichts geschehen. Wie mache ich das ?
Steffer - Mo 19.08.02 11:37
Schreibe in TQuery.BeforeDelete() folgende Zeilen:
Quelltext
1: 2:
| if TQuery.State = dsInsert then Abort; |
Damit wird der Löschvorgang abgebrochen, wenn ein neuer Datensatz eingefügt (Insert(),Append()) wird, aber noch nicht gespeichert ist.
Renegade - Mo 19.08.02 15:15
Moin erstmal!
bis11 hat folgendes geschrieben: |
Nur ich möchte das gerne, das er erst etwas löscht, nachdem der User seine Eingabe gemacht hat in dem Dialog der aufgerufen wird über den Delete-Button im Navigator. Es soll vorher nichts geschehen. |
Ich denke, dann kannst du den Navigator nicht benutzen. Ich würde den Delete-Button disablen und selber einen Button erstellen, in dem ich das löschen selber handle.
Gruß Renegade
bis11 - Mo 19.08.02 21:57
Hi Renegade,
danke für Deinen Tip, habe so eben einen kompletten DBNavigator durch SpeedButtons ersetzt.
@ all
Danke auch allen nochmal's für eure Hilfe und Tips.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!