Ver Mensaje Individual
  #3  
Antiguo 08-03-2005
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Reputación: 21
RONPABLO Va por buen camino
Para este procedimiento uso un Select

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).
Responder Con Cita