Ver Mensaje Individual
  #1  
Antiguo 07-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
Problema con un update en un SP

Un saludo a todo el Foro.

Tengo el siguiente problema, tengo un procedimiento almacenado el cual me devuelve la información del estado de cuenta de una persona de una forma detallada (Me muestra cuanto debe pagar hasta un mes, cuanto a dado, cuanto es la mora y el saldo mes tras mes y de forma total), la cuestión es que para ordenar tengo un campo al que llamo identificador y el cual necesito que se incremente en 1 según la fecha y la hora en que se abono (es decir, si el 1 de enero del 2005 es la primer cuota entonces el identificador es igual a 1, luego el 1 de febrero el identificador seria igual a dos y así seguiría hasta la ultima cuota), hasta este punto todo lo hago bien, el problema viene en el momento de colocar un abono en una fecha anterior a la que ya se a dado otra cuota (Ejemplo tengo un abono el 1 de enero --identificador = 1 -- y otro el 1 de marzo -- identificador = 2 -- y quiero colocar uno el 1 de febrero -- pero identificador = 3 y no quiero esto --) ya que el identificador para esta fecha queda con un valor mayor al de los meses siguientes que ya se han ingresado. Para solucionar esto y haciendo otro procedimiento almacenado con el cual actualizo el valor de identificador para que quede en orden pero no me funciona bien ya que nunca modifica el valor y no entiendo porque!!

De antemano agradezco cualquier ayuda o sugerencia para modificar este valor.

Código SQL [-]
 begin
   /* code */
   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 =  :ACUMULADOR 
      where a.ID =:id and a.FASE =:fase and a.FECHA =:fecha;
       suspend;
       ACUMULADOR = ACUMULADOR + 1;
     end
 end

Nota. El campo id llega por parámetro con el campo fase, además id es diferente del campo identificador, las demás variables son salidas para poder ver si se esta haciendo bien o no
Responder Con Cita