Hallo Torsten,
genauso hab ichs gemacht, deshalb ist das ja so unverständlich, dass ich trotzdem wieder die gleiche Kundennummer erhalte. Hier mal mein Code:
procedure TKundeStammForm3.BitBtn1Click(Sender: TObject);
begin
try
DataModule1.ADOConnection1.BeginTrans;
DataModule1.ADODataSet3.Post;
DataModule1.ADOConnection1.CommitTrans;
DataModule1.ADODataSet3.Active := false;
DataModule1.ADODataSet3.Active := true;
KundeStammForm1.CheckBox1.Checked := false
except
DataModule1.ADOConnection1.RollbackTrans;
DataModule1.ADODataSet3.Active := false;
DataModule1.ADODataSet3.Active := true;
KundeStammForm1.CheckBox1.Checked := false
end;
und nun der Stored Procedure Aufruf:
procedure TKundeStammForm1.CheckBox1Click(Sender: TObject);
var
id_neu : string;
ok : boolean;
begin
if CheckBox1.Checked = true then
begin
repeat
ok := true;
Wenn ich die if-Bedingung verwende erhalte ich immer die Fehlermeldung: "Transaktion is not aktive". Ich denke, dass hier auch der Fehler liegt, da die Insert transaktion sonst abgebrochen werden würde, oder nicht ?
{if DataModule1.ADOConnection1.inTransaction = true then
DataModule1.ADOConnection1.commitTrans;}
DataModule1.ADOConnection1.BeginTrans;
DataModule2.ADOStoredProc_KundenID.execProc;
id_neu := DataModule2.ADOStoredProc_KundenID.FieldByName('ID _NEU').Value;
try
DBEdit12.Field.ASString := id_neu
except
{on E: EIBError.SQLCode -803 DO }
ok := false;
DataModule1.ADOConnection1.RollbackTrans;
end;
until ok;
if DataModule1.ADOConnection1.InTransaction = true then
DataModule1.ADOConnection1.commitTrans;
end;
end;
Also, wie siehst Du das ?
Gruß Elk
genauso hab ichs gemacht, deshalb ist das ja so unverständlich, dass ich trotzdem wieder die gleiche Kundennummer erhalte. Hier mal mein Code:
procedure TKundeStammForm3.BitBtn1Click(Sender: TObject);
begin
try
DataModule1.ADOConnection1.BeginTrans;
DataModule1.ADODataSet3.Post;
DataModule1.ADOConnection1.CommitTrans;
DataModule1.ADODataSet3.Active := false;
DataModule1.ADODataSet3.Active := true;
KundeStammForm1.CheckBox1.Checked := false
except
DataModule1.ADOConnection1.RollbackTrans;
DataModule1.ADODataSet3.Active := false;
DataModule1.ADODataSet3.Active := true;
KundeStammForm1.CheckBox1.Checked := false
end;
und nun der Stored Procedure Aufruf:
procedure TKundeStammForm1.CheckBox1Click(Sender: TObject);
var
id_neu : string;
ok : boolean;
begin
if CheckBox1.Checked = true then
begin
repeat
ok := true;
Wenn ich die if-Bedingung verwende erhalte ich immer die Fehlermeldung: "Transaktion is not aktive". Ich denke, dass hier auch der Fehler liegt, da die Insert transaktion sonst abgebrochen werden würde, oder nicht ?
{if DataModule1.ADOConnection1.inTransaction = true then
DataModule1.ADOConnection1.commitTrans;}
DataModule1.ADOConnection1.BeginTrans;
DataModule2.ADOStoredProc_KundenID.execProc;
id_neu := DataModule2.ADOStoredProc_KundenID.FieldByName('ID _NEU').Value;
try
DBEdit12.Field.ASString := id_neu
except
{on E: EIBError.SQLCode -803 DO }
ok := false;
DataModule1.ADOConnection1.RollbackTrans;
end;
until ok;
if DataModule1.ADOConnection1.InTransaction = true then
DataModule1.ADOConnection1.commitTrans;
end;
end;
Also, wie siehst Du das ?
Gruß Elk
Comment