![]() |
Parámetros del procedimiento almacenado
Hola a todos, saludos. Tengo el siguiente procedimiento almacenado en Microsoft Sql Server 2000:
Explico que persigo con el mismo: tengo una tabla denominada factura con un campo Importe donde almacenado el importe de las facturas recibidas, con este procedimiento lo que persigo es que cuando se pongan los rangos de días me devuelva el importe total de las facturas pendientes de pago para ese rango. Ahora los posible rangos son, 0-30,30-60,60-90 y mas de 90 días, por eso es que hago nulo el segundo parámetro cuando el valor del primero es 90. Ahora cuando pongo los rangos de días si me funciona perfectamente bien, sin embargo cuando solo pongo valor en el primer parámetro no me genera ningún error solo que no me suma el Importe me devuelve 0.0000, además cuando el primer parámetro lo pongo a 90 me pasa lo mismo, sin embargo si pongo el rango si funciona, devolviéndome la suma del importe de las facturas sin pagar que se encuentran entre el rango de días. Alguién pudiera decirme que está mal, por qué no funciona. No se ya que hacer. Muchas gracias. |
buen dia efelix
una duda sobre a los periodos. los periodos se refieren a fechas pasadas o futuras es decir: 0-30 = hoy a (hoy+30) ó 0-30 = hoy a (hoy-30) disculpa la pregunta pero no estoy familiarizado con periodos administrativos, contables |
hola sinalocarlos, en este caso el rango de las cuantas por cobrar es irrelevante, el problema es que el procediemiento no funciona si solamente le suministro un de los dos párametros, y se fijas en su código, lo he puesto para que en caso de que el primero sea IGUAL a 90, el otro sea nulo, por qué hago esto, y es donde te respondo tu pregunta, la contabilidad trabaja la edad de las cuentas por cobrar de esa forma, es decir: 0-30,30-60,60-90 y mas de 90 días, por eso es que pongo esa condición en el procedimiento almacenado, pero se pueden poner cualquier rango de edad, ese no el problema, es el que expliqué anteriorrmente, espero que ahora me hayas entendido. Muchas gracias.
|
Hola
el problema es q estas haciendo Dias1 = 0, cuando hace la diferencia t da un numero positivo por lo tanto ninguna diferencia va a caer dentro d ese rango o sea: si la diferencia es 120 dias, t queda la comparacion: dias <= 120 <= 0 Saludos |
Ricardosml gracias por tu respuesta, analizando detenidamente el código del procedimiento alamcenado me di cuenta de lo que tu dices, ahora cómo tu crees que yo puedo resolver esa situación según la explicación que he dado anteriormente, es decir que el parámetro @Dias1 sea nulo cuando al parámetro @Dias se le asigne el valor de 90. De todas formas muchas gracias por tu aclaración.
|
Hola
Si lo que necesitas es 90 o mas lo mas facil creo q seria: CREATE PROCEDURE spImporteTotalEdadCuentasxPagar (@Dias integer, @Importe money OUTPUT, @Dias1 integer = NULL) AS IF (@Dias>=90) BEGIN SELECT @Importe=IsNull(Sum(Importe),0) FROM Facturas WHERE(Aplicada=0) AND DATEDIFF(day,FechaRecepcion, GETDATE())>=@Dias END ELSE BEGIN SELECT @Importe=IsNull(Sum(Importe),0) FROM Facturas WHERE(Aplicada=0) AND DATEDIFF(day,FechaRecepcion, GETDATE())>=@Dias AND DATEDIFF(day,FechaRecepcion, GETDATE())<=@Dias1 END GO Espero que t sea util. Saludos |
Hola Ricardosml, muchas gracias por tu gran ayuda, de esa manera ya resolví el problema del procedimiento almacenado, te reítero las gracias y disculpa la molestia.
|
La franja horaria es GMT +2. Ahora son las 02:31:59. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi