Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensatz löschen klappt nicht (Interbase) (https://www.delphipraxis.net/38309-datensatz-loeschen-klappt-nicht-interbase.html)

mcmac 17. Jan 2005 15:05


Datensatz löschen klappt nicht (Interbase)
 
Hallo !!

Ich habe folgendes Problem:
In meinem Programm, welches Datensätze verändern soll, hinzufügen etc. klappt das Löschen von Datensätzen nicht richtig.
Ich kann zwar im DBNavigator den DS löschen, er verschwindet dann auch aus dem DBGrid (z.B), aber beim Neustart vom Programm ist der gelöschte DS wieder da..
Alles andere, wie neue Datensätze erstellen klappt..

Kann mir evtl. jmd helfen??

Danke
mcmac

Luckie 17. Jan 2005 15:08

Re: Datensatz löschen klappt nicht (Interbase)
 
Du musst wahrscheinlich noch die datenbank aktualisieren, also die Änderung speichern. Dazu sollte Interbase eine entsprechende Method ebereitstellen.

UweR 17. Jan 2005 15:19

Re: Datensatz löschen klappt nicht (Interbase)
 
Hallo mcmac,

man könnte dir wesentlich besser helfen wenn man wüßte wie du auf die Interbase-datenbank zugreifst. Mit der BDE mit IBX oder mit was anderem. Deshalb bitte mal etwas mehr Infos rüberwachsen lassen

Stevie 17. Jan 2005 15:23

Re: Datensatz löschen klappt nicht (Interbase)
 
Hi,
ich rate mal ins Blaue - du setzt innerhalb deiner Transaktion kein Commit ab! Dann wird nach dem Schließen deines Programmes alles zurückgerollt und der Datensatz ist wieder da. Ebenso dürften neu eingefügte Sätze und geänderte nicht übernommen werden.

MfG
Stevie

mcmac 17. Jan 2005 15:26

Re: Datensatz löschen klappt nicht (Interbase)
 
neue datensätze werden übernommen, das ist ja das merkwürdige daran..

Noch n paar Infos:

die DB läuft mit Firebird, aber zum Einrichten habe ich IBExpert genommen..
In Delphi läuft die mit IBX

mcmac 17. Jan 2005 15:30

Re: Datensatz löschen klappt nicht (Interbase)
 
ergänzung: änderungen übernimmt es auch net

Stevie 17. Jan 2005 15:31

Re: Datensatz löschen klappt nicht (Interbase)
 
Genau das Problem kenn ich, das hatte ich auch. Leider weiß ich nicht mehr, was es genau war...
Ist IBExpert offen? Mach's mal zu, bzw. Datenbank disconnecten.
In der IDE connected -> disconnecten und erst zur Laufzeit.
Mit nem Monitor prüfen, ob auch commited wird!

Wenn ich mich nicht allzu irre, können in Firebird auch Datensätze gelockt werden, dass heißt, diese Sätze können nicht geändert oder gelöscht werden...

mcmac 17. Jan 2005 15:35

Re: Datensatz löschen klappt nicht (Interbase)
 
Hmm, wie kann ich das denn überprüfen??

IBExpert läuft net mehr, lief eig gar net..

mcmac 17. Jan 2005 15:40

Re: Datensatz löschen klappt nicht (Interbase)
 
Also ist das löschen net so das Problem, sondern halt nur das Commit..
Hmm, vielleicht hilft's, wenn ich mir das Datamodule noch mal neu aufbau..

Jens Schumann 17. Jan 2005 15:41

Re: Datensatz löschen klappt nicht (Interbase)
 
Zitat:

Zitat von Stevie
Wenn ich mich nicht allzu irre, können in Firebird auch Datensätze gelockt werden, dass heißt, diese Sätze können nicht geändert oder gelöscht werden...

Wenn ich mich nicht allzu irre gibt es bei Interbase/Firebird kein Lock.
Grund: Interbase/Firebird arbeitet mit einer Multigenerationenarchitektur.

P.S. Deshalb kennt der Interbase/Firebird auch keine Log-Dateien.

Stevie 17. Jan 2005 15:41

Re: Datensatz löschen klappt nicht (Interbase)
 
Es gibt ne Komponente TIBSQLMonitor, damit müsste das gehen.
Ich könnte dir aber auch die ZEOS-Komponenten empfehlen, die funktionieren einwandfrei mit Firebird!

P.S. Hmm, ich weiß nur, dass ich mal nen Datensatz, der im IBExpert ausgewählt war, nicht ändern konnte.

mcmac 17. Jan 2005 15:53

Re: Datensatz löschen klappt nicht (Interbase)
 
habe jetzt mal das DataModul neu aufgebaut, aber der Fehler bleibt gleich...
Gibts net irgendwie einen Befehl, mit dem ich delphi zwingen kann, in der DB einen Commit durchzuführen??
Vielleicht als Property von der IBTransaction oder so??

Stevie 17. Jan 2005 16:02

Re: Datensatz löschen klappt nicht (Interbase)
 
Zitat:

Zitat von mcmac
habe jetzt mal das DataModul neu aufgebaut, aber der Fehler bleibt gleich...
Gibts net irgendwie einen Befehl, mit dem ich delphi zwingen kann, in der DB einen Commit durchzuführen??
Vielleicht als Property von der IBTransaction oder so??

Genau deshalb benutz ich diesen Mist nicht mehr! Du musst mit IBX selber ein Commit an den Stellen absetzen, wo du sie benötigst, und zwar mit dem Befehl IBTransaction.CommitRetaining. Dieser schreibt die Änderungen fest, aber hält die Transaktion offen.

mcmac 17. Jan 2005 16:05

Re: Datensatz löschen klappt nicht (Interbase)
 
Hmm, das habe ich gemacht, sieht jetzt so aus:
(Nicht erschrecken wegen dem Navigator-Zeugs - Spart Zeilen)

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
begin
  dbnavigator1.BtnClick(nbdelete);
  cvsdata.DataModule1.IBTransaction1.CommitRetaining;
end;
Dummerweise klappt das net

Stevie 17. Jan 2005 16:15

Re: Datensatz löschen klappt nicht (Interbase)
 
Hrm, wie wär's damit im AfterDelete-Event des DataSets - wenn du schon ein DataModul machst, dann gehört sowas ganz sicher da rein.

mcmac 17. Jan 2005 16:35

Re: Datensatz löschen klappt nicht (Interbase)
 
Also ich habe es jetzt auch im AfterDelete und AfterEdit vom DataSet, aber es bringt rein gar nichts..
*seufz* So langsam verzweifel ich

mcmac 17. Jan 2005 17:14

Re: Datensatz löschen klappt nicht (Interbase)
 
Merkwürdig - Habe zum Test mal ein neues Projekt gemacht, neue Tabelle in gleicher DB und *schwupps* - Es klappt ALLES...

Narf, ich glaube ich setze jetzt nochmal bei der Tabelle selbst an...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 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