Bien, esto me esta rompiendo la cabeza, espero alguno de los maestros de aca me puedan ayudar
Tengo el siguiente codigo el cual es una funcion con el objetivo de insertar un registro en la DB.
Código Delphi
[-]
var
trnExecute: TIBTransaction;
qryExecute: TIBQuery;
begin
Result:=False;
qryExecute:=TIBQuery.Create(nil);
qryExecute.Database:=dbMain.dbMain;
trnExecute:=TIBTransaction.Create(nil);
trnExecute.DefaultDatabase:=dbMain.dbMain;
qryExecute.Transaction:=trnExecute;
trnExecute.Params.Clear;
trnExecute.Params.Add('read_committed');
trnExecute.Params.Add('rec_version');
trnExecute.Params.Add('nowait');
trnExecute.StartTransaction;
qryExecute.SQL.Text:='INSERT INTO LOG_MAESTRO(ID_USUARIO,FECHA,FORMULARIO,HORA,ACCION,GUIA,OT,ID_CLIENTE,ID_CARTERO,CANTIDAD) VALUES(:ID_USUARIO,:FECHA,:FORMULARIO,:HORA,:ACCION,:GUIA,:OT,:ID_CLIENTE,:ID_CARTERO,:CANTIDAD)';
with qryExecute do
try
trnExecute.StartTransaction;
ParamByName('ID_USUARIO').value:=idUsuario;
ParamByName('FORMULARIO').value:=formulario;
ParamByName('FECHA').value:=date;
ParamByName('ACCION').value:=accion;
ParamByName('HORA').value:=time;
ParamByName('GUIA').Value:=guia;
ParamByName('OT').value:=ot;
ParamByName('ID_CLIENTE').value:=idcliente;
ParamByName('ID_CARTERO').value:=idcartero;
ParamByName('CANTIDAD').Value:=cantidad;
if not active then open;
trnExecute.Commit;
Result:=True;
except
trnExecute.Rollback;
end;
qryExecute.Free;
trnExecute.Free;
end;
Creo la consulta y la transaccion, asigno los valores correspondientes a ambos, pero al momento de llegar a la linea
Código Delphi
[-]
trnExecute.StartTransaction;
el programa me arroja los siguientes errores.
Código:
Project cprivados.exe raised exception class EIBClientError with message 'Cannot perform operation -- DB is not open'.
y
Código:
Project cprivados.exe raised exception class EIBClientError with message 'Transaction is not active'.
La verdad no se que puede ser he probado cambiando el orden de las lineas, he buscado codigos similares en internet y no veo que es lo que me falla.
Si alguien pudiese orientarme se lo agradeceria un monton.
PD: La base de datos se llama dbMain y esta en el modulo de datos dbMain. La conexion con la DB se realiza al momento de la creacion del modulo de datos, lo cual ocurre con el inicio de la aplicacion, por lo que la DB esta conectada permanentemente desde el inicio de la aplicacion.
Quizas este demas decir que todas las consultas que se hacen con componentes arrastrados desde la paleta de componentes funcionan bien, solo tengo problema con esta consulta con código.