Gracias por la respuesta, pero como digo en el titulo utilizo un select para la consulta, lo mas raro de todo es que cuando quito la condición de la hora y la fecha en el update no hay ningun problema... es como si no encontrara la fecha dentro de la tabla
Esto lo hago sobre Firebird 1.5 y con delphi 6
Estos son mas datos de todo lo que hago:
T_adicionales_abonos ==> Es la tabla
Valor = Integer;
Fecha = Date;
Hora = Time;
id = Integer; ==> Este lo uso para identificar a la persona
Identificador = Integer; ==> Este lo uso para determinar un orden en la tabla
Fase = Integer;
P_INCREMENTAR_IDENTIFICADOR ==> es el procedimiento y aqui esta todo el codigo:
Código SQL
[-]
SET TERM ^^ ;
CREATE PROCEDURE P_INCREMENTAR_IDENTIFICADOR (
ID Integer,
FASE Integer)
returns (
FECHA Date,
HORA Time,
IDNTI Integer,
ACUMULADOR Integer)
AS
begin
ACUMULADOR =1;
for select distinct bb.FECHA, bb.HORA, bb.IDENTIFICADOR
from T_ADICIONALES_ABONOS bb where bb.ID =:id and bb.FASE =:fase
ORDER BY BB.FECHA, BB.HORA
into :fecha, :hora, :IDNTI
do
begin
update T_ADICIONALES_ABONOS a set a.IDENTIFICADOR =
(select max(aa.IDENTIFICADOR) + 1 from T_ADICIONALES_ABONOS aa
where aa.id =a.id and aa.FASE =a.fase) where a.ID =:id and a.FASE =:fase and a.FECHA =:fecha;
suspend;
ACUMULADOR = ACUMULADOR + 1;
end
ACUMULADOR =0;
end
^^
SET TERM ; ^^
Y para activar el Query lo hago desde un IBQUery, pero tambien lo miro por un gestor de bases de datos para firebird. Como tal la consulta que hago es así:
Código SQL
[-]
select * from P_INCREMENTAR_IDENTIFICADOR (:id,:fase)
ID y Fase llegan por parametro del IBQuery, o para las pruebas manuales lo hago dandole un valor que se que exite (ID = 1, Fase = 1).
Y nuevamnete gracias por responder.
Nota. El campo IDNTI lo uso para comparar la salida pero en el momento que termine lo quito (hay disculpan el nombre poco diciente).