Buenas, estoy intentando hacer un pequeño Script para borrar unos datos en mi Firebird 2.5.
Estoy usando TFDScript y Delphi XE5.
Paso a continuación el código que tengo.
Código Delphi
[-]
procedure TfrmVueltaAtrasUltimoBoletin.btnVueltaAtrasClick(Sender: TObject);
begin
if IDYES = Application.MessageBox(PWideChar('¿Confirma vuelta atrás del último Boletín (BOD) registrado?'
+ #13#10 + 'Esta acción NO PODRÁ deshacerse.'),
PWideChar(Self.Caption), MB_YESNO + MB_ICONQUESTION) then
begin
with DataModule1 do
begin
terminarTransaccion;
try
trxBoletin.StartTransaction;
scrptUltimoBoletin.SQLScriptFileName:='Scripts\VueltaAtras.sql';
scrptUltimoBoletin.Params[0].AsInteger:=GetCodBOD;
scrptUltimoBoletin.ValidateAll;
scrptUltimoBoletin.ExecuteAll;
trxBoletin.Commit;
Application.MessageBox('Vuelta atrás terminada.',
PWideChar(self.Caption), MB_OK + MB_ICONINFORMATION);
Close;
except
on e:Exception do
begin
terminarTransaccion;
mErrores(e, 'Imposible completar la operación solicitada.',
self.Caption);
end;
end;
end;
end;
end;
Ahora muestro lo que tengo en el archivo .sql
Código SQL
[-]
Delete from avisosxboletines_digitales a
Where a.cod_boletin_digital = :codigo;
Delete from avisosadminxboletines_digitales ax
where ax.cod_boletin_digital = :codigo;
Delete from boletines_digitales b
Where b.cod_boletin_digital = :codigo;
Update entorno_boletin_digital u set u.valor_ebd = CAST(u.valor_ebd AS integer) - 1
Where u.nombre_ebd = 'ULTIMO_NRO_EDICION';
El parámetro :codigo lo he definido a través de: TFDScript.Params
La cuestión es que esta secuencia no me tira ningún error, llega al Commit sin drama y me dice que la operación se hizo correctamente. Pero cuando voy a ver mi BBDD, los datos siguen ahí, no se borraron los registros que quiero.
He comprobado este script SQL haciéndolo directamente en Script Executive de IBExpert y funciona bien, no hay errores.
¿Podría decirme alguien que estoy haciendo mal?
Muchas gracias.