No entiendo como puede funcionar con comillas, pero si dices que lo hace, será así.
De todos modos, si te fijas en el Select, los parámetros no tiene comillas (:IDMEN)
Código SQL
[-]
select * from "Cabeceras"
where
"idMensaje" = :IDMEN
Por lo tanto, creo que por lo menos los parámetros en el Update tampoco deberían llevarlas:
Código SQL
[-]
update "Cabeceras"
set
"Cabeceras"."procesado" =
rocesado
where
"Cabeceras"."idMensaje" = :OLD_idMensaje
También puedes probar el quitar la parte OLD_ del parámetro
Código SQL
[-]
update "Cabeceras"
set
"Cabeceras"."procesado" =
rocesado
where
"Cabeceras"."idMensaje" = :idMensaje
Y finalmente, si no te da ningún error, puede deberse a que todo está dentro de algún bloque try...except más amplio.
Prueba lo siguiente para ver si falla en algún lado:
Código Delphi
[-]
try
DMRepara.QrPre.Close;
DMRepara.QrPre.UnPrepare;
DMRepara.QrPre.ParamByName('ENTRE').asstring := DMRepara.QrCab.FieldbyName('numPreaviso').asstring;
DMRepara.QrPre.Prepare;
DMRepara.QrPre.Open;
DMRepara.QrPre.First;
while not DMRepara.QrPre.Eof do
Begin
if DMRepara.QRPre.FieldByName('numEntre').AsString =
DMRepara.QRCab.FieldByName('numEntre').AsString then
Begin
try
DMRepara.QrUCab.Close;
DMRepara.QrUCab.UnPrepare;
DMRepara.QrUCab.ParamByName('IDMEN').asinteger := DMRepara.QrPre.FieldbyName('idMensaje').asinteger;
DMRepara.QrUCab.Prepare;
DMRepara.QrUCab.Open;
DMRepara.QrUCab.Edit;
DMRepara.QrUCab.FieldByName('procesado').AsString := '1';
DMRepara.QrUCab.Post;
except
on E:exception do ShowMessage(E.Message);
end;
end;
DMRepara.QrPre.Next;
end;
DMRepara.QRPre.Active := False;
DMRepara.QrCab.Next;
except
on E:exception do ShowMessage(E.Message);
end;
end;
end;
DMRepara.QrUCab.ApplyUpdates;
DMRepara.TRPuerto.Commit;
DMRepara.QrEntr.Close;
DMRepara.QrPre.Close;
DMRepara.QRCab.Close;
DMRepara.QrUCab.Close;