Hi,
ich krieg die Krise.
Ich hatte den Code von omata übernommen und das hatte auch alles geklappt.
Seit eben kommt aber bei allem was ich tue (auch bei einer anderen Methode) nur noch folgende Fehlermeldung:
Zitat:
invalid transaction
handle (expecting explicit transaction start)
Der Code im Moment:
Delphi-Quellcode:
var
proc: TIBCStoredProc;
ta: TIBCTransaction;
query: TIBCQuery;
i, contactid: Integer;
begin
ta := TIBCTransaction.Create(
nil);
proc := TIBCStoredProc.Create(
nil);
query := TIBCQuery.Create(
nil);
result := True;
try
ta.DefaultConnection := ibc_mainDB;
proc.Transaction := ta;
query.Transaction := ta;
ta.StartTransaction;
try
proc.StoredProcName := '
CREATECUSTOMER';
proc.Prepare;
proc.ParamByName('
name').Value := custName;
proc.ParamByName('
title').Value := title;
proc.ParamByName('
forename').Value := forename;
proc.ParamByName('
surname').Value := surname;
proc.ParamByName('
street').Value := street;
proc.ParamByName('
houseNo').Value := houseNo;
proc.ParamByName('
country').Value := Uppercase(country);
proc.ParamByName('
zipcode').Value := zipcode;
proc.ParamByName('
cityname').Value := cityname;
proc.ExecProc;
contactid := proc.ParamByName('
contactid').AsInteger;
query.SQL.Text :=
'
INSERT INTO DIALNUMBER (NUMBERTYPE, NUMBER, CONTACTID) VALUES (:type, :no, :contactid)';
query.Prepare;
for i := 0
to length(dialNo) - 1
do
begin
query.ParamByName('
type').Value := dialNo[i][0];
query.ParamByName('
no').Value := dialNo[i][1];
query.ParamByName('
contactid').Value := contactid;
query.Execute;
end;
ta.Commit;
except
result := False;
ta.Rollback;
raise;
end;
finally
query.Free;
proc.Free;
ta.Free;
end;
end;
Was mache ich falsch?
Es tritt auch bei den Codes von Thomas und omata auf.
Ich muss also irgendwo was generelles verdreht haben, aber ich weiß nicht was?!
Neustart half auch nicht.
LG, Frederic