Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Parámetros del procedimiento almacenado

Hola a todos, saludos. Tengo el siguiente procedimiento almacenado en Microsoft Sql Server 2000:
Código SQL [-]
CREATE PROCEDURE spImporteTotalEdadCuentasxPagar
               (@Dias integer,
                @Importe money OUTPUT,
               @Dias1 integer = NULL)       
 AS
   IF (@Dias1 IS Null)
   begin
       SELECT @Dias1=0
   end 
IF (@Dias>=90)
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
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
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.
Responder Con Cita
  #2  
Antiguo 01-11-2006
sinalocarlos sinalocarlos is offline
Miembro
 
Registrado: sep 2006
Posts: 152
Poder: 18
sinalocarlos Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 02-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 02-11-2006
Ricardosml Ricardosml is offline
Miembro
 
Registrado: oct 2004
Ubicación: Salta
Posts: 13
Poder: 0
Ricardosml Va por buen camino
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
__________________
Un hombre con una idea nueva es un loco hasta que la idea triunfa. (Marc Twain)
PD: Perdón por la ortografía

Responder Con Cita
  #5  
Antiguo 02-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 02-11-2006
Ricardosml Ricardosml is offline
Miembro
 
Registrado: oct 2004
Ubicación: Salta
Posts: 13
Poder: 0
Ricardosml Va por buen camino
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
__________________
Un hombre con una idea nueva es un loco hasta que la idea triunfa. (Marc Twain)
PD: Perdón por la ortografía

Responder Con Cita
  #7  
Antiguo 03-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procedimiento almacenado efelix MS SQL Server 7 21-11-2007 17:53:00
Procedimiento almacenado LucianoRey MS SQL Server 2 23-08-2005 00:37:06
Parametros a procedimiento almacenado JulioGO PHP 1 03-09-2004 19:04:50
Procedimiento almacenado y Ado LucianoRey MS SQL Server 11 06-07-2004 22:55:23
Procedimiento Almacenado Ulises Providers 3 30-01-2004 18:14:58


La franja horaria es GMT +2. Ahora son las 06:33:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi