AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten werden nicht geschrieben "Transaktion ist Aktiv"
Thema durchsuchen
Ansicht
Themen-Optionen

Daten werden nicht geschrieben "Transaktion ist Aktiv"

Ein Thema von Alphacodex · begonnen am 18. Jul 2009 · letzter Beitrag vom 18. Jul 2009
Antwort Antwort
Alphacodex

Registriert seit: 16. Mär 2006
65 Beiträge
 
Delphi 2006 Professional
 
#1

Daten werden nicht geschrieben "Transaktion ist Aktiv&q

  Alt 18. Jul 2009, 11:57
Datenbank: Firebird • Version: 2.5 • Zugriff über: Interbase
Hallo,

ich brauch doch nochmal Hilfe.

Ich habe folgendes Problem. Wenn ich in der TDBAdvGrid etwas editiere und dann einen Commitauslösen will, bekomme ich immer die Melden "Transaktion Aktiv". Die Daten werden aber nicht geschrieben. Ich habe den Code zum Auslösen der Transaktion mal zu Testzwecken in einen Button ausgelagert, hier mal ein Ausschnitt aus meiner UMain:


Delphi-Quellcode:
procedure Tf_main.FormShow(Sender: TObject);
begin
   if not FileExists('Datenbanken\ZENTRALDATEI.FDB') then begin
      ShowMessage('Die Zentraldatenbank wurde nicht gefunden');
      HALT
  end;
  dm.db_zentral.Open;
end;

procedure Tf_main.AdvSmoothButton1Click(Sender: TObject);
begin
  if dm.dbtrans.InTransaction then dm.dbtrans.Commit; // falls noch eine TRansaktion offen ist, die Änderungen schreiben und abschließen
  dm.faelle.Open; // neu laden des Datasets, damit die Änderungen sichtbar werden
  dm.dbtrans.StartTransaction; // eine neue Transaktion beginnen
end;


procedure Tf_main.p_faelleShow(Sender: TObject);
begin
  grid_faelle.FixedCols := 0;
  dm.faelle.Open;

end;
faelle ist ein DataSet, grid_faelle ist Das TDBAdvGrid, dbtrans ist die Transaktionskomponente, db_zentral ist die Datenbankverknüpfung. Wie gesagt der Grid nimmt die Änderung zunächst an, wenn ich dann aber den Button drücke kommt der Fehler und die Daten werden nicht geschrieben.


Kann mir jemand einen Tip geben?

Danke Codex
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Daten werden nicht geschrieben "Transaktion ist Akt

  Alt 18. Jul 2009, 12:07
-Wie sieht die Abfrage aus?
-Hast du ein manuelles Update-Statement gesetzt?
-Hast du verschiedene Transaktionen für Abfrage und DML-Statements gesetzt?
-Wie ist/sind die Transaktion konfiguriert?
Markus Kinzler
  Mit Zitat antworten Zitat
Alphacodex

Registriert seit: 16. Mär 2006
65 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Daten werden nicht geschrieben "Transaktion ist Akt

  Alt 18. Jul 2009, 17:16
Äh... *rot werd* ok erwischt. Das sagt mir alles nicht wirklich was... Wo kann ich mir das anlesen? Dann schreibe ich wieder, wenn ich Deine Fragen verstanden habe *g*


Grüße
Codex
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Daten werden nicht geschrieben "Transaktion ist Akt

  Alt 18. Jul 2009, 17:26
Zitat:
-Wie sieht die Abfrage aus?
Welche SQL-Abfrage hast du den bei IBDataSet.SelectSQL eingetragen?
Zitat:
-Hast du ein manuelles Update-Statement gesetzt?
Hast du was bei IBDataSet.ModifySQL eingetragen?
Zitat:
-Hast du verschiedene Transaktionen für Abfrage und DML-Statements gesetzt?
Hat sich erledigt IBX unterstützt wohl nur eine Transaktion pro DataSet
Zitat:
-Wie ist/sind die Transaktion konfiguriert?
Auf was ist IBTransaction.DefaultAction eingestellt?
Markus Kinzler
  Mit Zitat antworten Zitat
Alphacodex

Registriert seit: 16. Mär 2006
65 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Daten werden nicht geschrieben "Transaktion ist Akt

  Alt 18. Jul 2009, 17:46
SQL Abfrage ist ganz einfach zum Starten alle Felder aus meiner FAELLE-Tabelle:

select * from FAELLE
Modify SQL sieht so aus (hat er selbst erzeugt, war so im Tut beschrieben):

SQL-Code:
update FAELLE
set
  FALLNAME = :FALLNAME,
  FORT = :FORT,
  GESCHWISTER = :GESCHWISTER,
  HMA = :HMA,
  HMA_STD = :HMA_STD,
  INDEXANREDE = :INDEXANREDE,
  INDEXGEB = :INDEXGEB,
  INDEXNACHNAME = :INDEXNACHNAME,
  INDEXORT = :INDEXORT,
  INDEXPLZ = :INDEXPLZ,
  INDEXSTRASSE = :INDEXSTRASSE,
  INDEXVORNAME = :INDEXVORNAME,
  JA = :JA,
  JA_MA = :JA_MA,
  KOSTENART = :KOSTENART,
  MA_BEGINN = :MA_BEGINN,
  MA_ENDE = :MA_ENDE,
  MA_STUNDEN = :MA_STUNDEN,
  MA3 = :MA3,
  MA3_STD = :MA3_STD,
  MA4 = :MA4,
  MA4_STD = :MA4_STD,
  MA5 = :MA5,
  MA5_STD = :MA5_STD,
  MA6 = :MA6,
  MA6_STD = :MA6_STD,
  NMA = :NMA,
  NMA_STD = :NMA_STD,
  STATUS = :STATUS,
  ZIELE = :ZIELE,
  ZUS_ANREDE = :ZUS_ANREDE,
  ZUS_ORT = :ZUS_ORT,
  ZUS_PLZ = :ZUS_PLZ,
  ZUS_STRASSE = :ZUS_STRASSE
where
  FALLID = :OLD_FALLID
Standard-Transaktion ist: TACommit



Ich inzwischen etwas weiter rumprobiert: Ich hatte die Transaction-Komponente mal testweise direkt zur Designzeit auf Active gestellt. Er hat dann zumindest einige Werte übernommen. Wenn ich den Button klicken, kommt trotzdem noch die Fehlermeldung. Aber offenbar ist in dem TDBAdvGrid schon eine eigene Transaktions-Behandlung integriert und ich muss das gar nicht extra im Code machen...(?). Selsamerweise übernimmt er die Werte von ID-Feldern nicht (die intern als Primär- oder Fremdschlüssel definiert sind). Ich vermute mal entweder weil ich für Indexfelder eine eigene Behandlung brauche oder weil die eingebenen Daten als Chars interpretiert werden, der Datentyp des Feldes aber Integer...


Grüße
Codex
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Daten werden nicht geschrieben "Transaktion ist Akt

  Alt 18. Jul 2009, 18:04
Primärschlüsselfelder sollte man natürlich nicht ändern. So geht es auf jedenfall nicht, da die Werte anhand dessen wert geändert werden ("Ändere den Datensatz mit der ID ...")
Markus Kinzler
  Mit Zitat antworten Zitat
Alphacodex

Registriert seit: 16. Mär 2006
65 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Daten werden nicht geschrieben "Transaktion ist Akt

  Alt 18. Jul 2009, 18:08
Ja klar, der Primärschlüssel natürlich nicht, aber die Fremdschlüssel müsste man doch eintragen können...
  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 05:59 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