Autor Beitrag
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 18.08.02 21:55 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 299



BeitragVerfasst: 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.

_________________
Keine Signatur ...
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 299



BeitragVerfasst: Mo 19.08.02 11:37 
Schreibe in TQuery.BeforeDelete() folgende Zeilen:
ausblenden 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.

_________________
Keine Signatur ...
Renegade
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 358

Win XP Pro, Win 7 Beta
BDS 2006
BeitragVerfasst: 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

_________________
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: 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.