El caso es que inicio la aplicacion e inserto correctamente el primer cliente, pero si quiero volver a insertar me dice: REmote error:Invalid transaction object.
Osea los procedimientos estan bien, se me hace que faltaria destruir el objeto de transaccion, y crearlo cuando se llama al procedure, la verdad no se.
Tengo otras inserciones que dan el mismo problema.
delphi
function TServerMethods1.insertarcliente(idlocalidad,DNI,cuit,cuil,cupodias:integer; descuento,cupocheques,cupopesos,cupochequestro:Double;domicilio,nombreyape,direccion,email:string):boolean; var uubicacion,upersona,ucliente:integer; tr:tdbxTransaction; exito:boolean; begin SUCURSAL.Open; tr:=SUCURSAL.BeginTransaction(); try begin with qipersona do begin Close; ParamByName('DNI').AsInteger:=DNI; ParamByName('nombreyape').AsString:=nombreyape; ParamByName('direccion').AsString:=direccion; ParamByName('email').AsString:=email; ExecSQL(); Free; end end except SUCURSAL.RollbackFreeAndNil(tr); end; try begin with qicliente do begin Close; ParamByName('idpersona').AsInteger:=qucli.ExecSQL(); ParamByName('cuit').AsInteger:=cuit; ParamByName('cuil').AsInteger:=cuil; ParamByName('deuda').AsFloat:=0.00; ParamByName('cupodias').AsInteger:=cupodias; ParamByName('cupocheques').AsFloat:=cupocheques; ParamByName('cupopesos').AsFloat:=cupopesos; ParamByName('cupochequestro').AsFloat:=cupochequestro; ParamByName('descuento').AsFloat:=descuento; ExecSQL(); Free; SUCURSAL.CommitFreeAndNil(tr); exito:=True; end end except SUCURSAL.RollbackFreeAndNil(tr); end; Result:=exito; end; function TServerMethods1.insertartelefonoscliente(numero,idtipotel:integer;descripciontel:string):boolean; var tr:TDBXTransaction; exito:boolean; begin SUCURSAL.Open; if (SUCURSAL.InTransaction=False) then tr:=SUCURSAL.BeginTransaction() else begin try begin with qtelefono do begin Close; ParamByName('numero').AsInteger:=numero; ParamByName('idtipotel').AsInteger:=idtipotel; ParamByName('descripcion').AsString:=descripciontel; ExecSQL(); Free; end; end; // si no se pudo except begin SUCURSAL.RollbackFreeAndNil(tr); exito:=false; end; try with telcli do begin Close; ParamByName('idc').AsInteger:=qucliente.ExecSQL(); ParamByName('idt').AsInteger:=qut.ExecSQL(); ExecSQL(); Free; end; except SUCURSAL.RollbackFreeAndNil(tr); exito:=false; end; SUCURSAL.CommitFreeAndNil(tr); end; Result:=exito; end; end; function TServerMethods1.insertarubicacionescliente(idlocalidad:Integer;domicilio,descripcion:string):boolean; var tr:TDBXTransaction; exito:boolean; begin SUCURSAL.Open; if (SUCURSAL.InTransaction=False) then tr:=SUCURSAL.BeginTransaction() else begin try with qiubicacion do begin Close; ParamByName('idlocalidad').AsInteger:=idlocalidad; ParamByName('domicilio').AsString:=domicilio; ParamByName('descripcion').AsString:=descripcion; ExecSQL(); Free; end; // si no se pudo except SUCURSAL.RollbackFreeAndNil(tr); exito:=false; end; try with quper do begin Close; ParamByName('idp').AsInteger:=qup.ExecSQL(); ParamByName('idu').AsInteger:=quu.ExecSQL(); //ParamByName('descripcion').AsString:=descripcion; ExecSQL(); Free; end; SUCURSAL.CommitFreeAndNil(tr); except SUCURSAL.RollbackFreeAndNil(tr); exito:=false; end; Result:=exito; end; end;