FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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.
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 |
#2
|
||||
|
||||
Hola Pablo!
Tan sólo para descartar algunas posibilidades, podrías decirnos como invocas al procedimiento. Es decir, como se trata de un ciclo FOR SELECT lo correcto es llamarlo con la sentencia SELECT, pero si lo estás invocando con las sentencia EXECUTE PROCEDURE entonces al encontrar la sentencia SUSPEND dejará de funcionar y no procesará todos los registros de la consulta. Lo correcto sería algio así:
Bueno, te repito que sólo es un intento por descartar posibilidades hasta encontrar el error. Un saludo. |
#3
|
||||
|
||||
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:
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í:
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). |
#4
|
||||
|
||||
Disculpen si funciono con el Select
Ahora ya no se en que mundo estoy... volvi a probar con select y corrio bien..
HECTOR RANDOLPH muchas gracias por la respuesta |
|
|
|