AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Transaction wird nicht richtig beendet !
Thema durchsuchen
Ansicht
Themen-Optionen

Transaction wird nicht richtig beendet !

Ein Thema von wlfmario · begonnen am 25. Jan 2006 · letzter Beitrag vom 25. Jan 2006
Antwort Antwort
wlfmario

Registriert seit: 5. Jan 2005
Ort: Pulheim
115 Beiträge
 
#1

Transaction wird nicht richtig beendet !

  Alt 25. Jan 2006, 00:17
Datenbank: Interbase / Firebird • Zugriff über: IB
Hallo zusammen,

ich habe hier ein kleines Prob. mit meiner Interbase Datenbank.
Ich benutze die IBDatabase, IBTranaction und IBDataSet Komponenten um werte in die DB zu schreiben oder zu bearbeiten.
Wenn meine Eingabemaske aufrufe, (vorher rufe ich DM.IBShop.Insert; auf und meine Daten in den DBEdit's eingegeben habe speichere ich die Daten mit DM.IBShop.Post; in der Datenbank.
So lange mein Programm läuft, sehe ich die Daten in dem DBGrid. Beende ich das Programm und starte neu, sind die Daten nicht mehr da.
Jetzt habe ich mal
Delphi-Quellcode:
DM.IBShop.Post;
DM.IBTrans.Commit;
eingegeben, jetzt werden die Daten gespeichert aber ich kann keine neuen Daten eingeben.
Was mache ich Falsch ?
Mario
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Transaction wird nicht richtig beendet !

  Alt 25. Jan 2006, 00:29
Nöö, das ist alles richtig so. Du musst die Transaktion abschließen und das geht mit COMMIT. Dann stehen die Daten sicher in der DB. Als du das nicht gemacht hast und dein Programm beendet hast wurde automatisch ein ROLLBACK gemacht und die Daten wurde nicht eingetragen, das ist so richtig.

Da du die Datenbankkompos von Delphi nimmst, musst du wieder eine Transaktion starten um die Daten zu sehen, das liegt am Interbase/Firebird. Wegen der Multi-Genration-Architektur muss auch jedes SELECT in einer Transaktion laufen.

André
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
wlfmario

Registriert seit: 5. Jan 2005
Ort: Pulheim
115 Beiträge
 
#3

Re: Transaction wird nicht richtig beendet !

  Alt 25. Jan 2006, 00:38
Das klappt aber leider nicht so ganz !
Wenn ich IBTrans.StartTransaction; ausführe, werden meine Daten nicht im DBGrid angezeigt. (Ich meine keine Daten.)
Mario
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Transaction wird nicht richtig beendet !

  Alt 25. Jan 2006, 00:43
Zitat von wlfmario:
IBTrans.StartTransaction;
Direkt noch dem Commit sollte das aber schon klappen? Ich hab schon 2 Jahre nix mehr mit dem FB unter Delphi gemacht
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
wlfmario

Registriert seit: 5. Jan 2005
Ort: Pulheim
115 Beiträge
 
#5

Re: Transaction wird nicht richtig beendet !

  Alt 25. Jan 2006, 00:47
Schade bei mir leider nicht

Delphi-Quellcode:
 DM.IBShop.Post;
// DM.IBTrans.CommitRetaining;
dm.IBTrans.Commit;
DM.IBTrans.StartTransaction;
Wenn ich DM.IBTrans.CommitRetaining; eingebe klappt es soll aber nicht grade das Gelbe vom Ei sein habe ich gelesen.
Mario
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Transaction wird nicht richtig beendet !

  Alt 25. Jan 2006, 08:36
Hi,

bei einem Commit werden die DataSets geschlossen, d.h. Du musst diese wieder öffnen. Ich gehe da immer her und schließe vor einem Commit die entsprechednen DataSets, mache dann ein Commit und öffne die Dinger wieder.

CommitRetaining verhindert das schließen der DataSets, macht aber die Transaktion nicht komplett zu. Das führt bei Mehrbenutzersystemen, die lange laufen und viele Leute gleichzeitig auf die Daten zugreifen, über kurz oder lang zu Problemen, da Transaktionen lange laufen.

Grüße
Lemmy
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Transaction wird nicht richtig beendet !

  Alt 25. Jan 2006, 08:44
Ein StartTransaction macht man prinzipiell vor dem Einfügen der Daten:

Delphi-Quellcode:
dm.IBTrans.StartTransAction ;
dm.IBShop.Insert ;
// Daten füllen
dm.IBShop.Post ;
dm.IBTran.Commit ;
Danach ist dann auch beim Öffnen kein weiteres Commit nötig.
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#8

Re: Transaction wird nicht richtig beendet !

  Alt 25. Jan 2006, 08:47
Hallo Mario,

Zitat von wlfmario:
Schade bei mir leider nicht

Delphi-Quellcode:
 DM.IBShop.Post;
// DM.IBTrans.CommitRetaining;
dm.IBTrans.Commit;
DM.IBTrans.StartTransaction;
Wenn ich DM.IBTrans.CommitRetaining; eingebe klappt es soll aber nicht grade das Gelbe vom Ei sein habe ich gelesen.
Durch ein (Hard)Commit werden alle zur Transaction gehörenden Datenmengen geschlossen.
Du mußt diese wieder mit Open öffnen.
Bei einem CommitRetaining bleiben die Datenmengen geöffnet. Ein CommitRetaining belastet aber
den Server bis zum eigentlichen (Hard)Commit. Welche weiteren Vor- oder Nachteile ein CommitRetaining hat
kann ich die aber nicht sagen, ich weis nur das man es wen es geht vermeiden sollte.

alex
Alexander
  Mit Zitat antworten Zitat
wlfmario

Registriert seit: 5. Jan 2005
Ort: Pulheim
115 Beiträge
 
#9

Re: Transaction wird nicht richtig beendet !

  Alt 25. Jan 2006, 12:13
Danke das war es !
Es lag an der DataSet.Open ....

Was mich nur etwas Irretiert, ist das in meinem ersten Projekt wo ich die gleichen Kompos benutze ich kein Commit und Rollback im Script habe und es klappt trozdem.
Mario
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 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