Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Filtrar un SP

Estas en el tema de Filtrar un SP en el foro de SQL Server en Foros del Web. Tengo problemas con mi SP, cuando lo ejecuto por ejemplo, le pongo condiciones como: busca solo los artículos clase "A" y cuando ejecuto no me ...
  #1 (permalink)  
Antiguo 26/10/2010, 16:52
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Pregunta Filtrar un SP

Tengo problemas con mi SP, cuando lo ejecuto por ejemplo, le pongo condiciones como: busca solo los artículos clase "A" y cuando ejecuto no me hace ningún filtro, tampoco funciona con ningún tipo de artículo, etc, espero que ustedes me puedan ayudar a resolver mi problema, aquí dejo mi código:

Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[P5rADCArticuloCaract]
  2. (@Empresa   utClave
  3. ,@Clase     utClave
  4. ,@Grupo     utClave
  5. ,@Familia   utClave
  6. ,@Articulo  utClave)
  7. AS
  8.  
  9. DECLARE
  10. @Anio       utEntero,
  11. @Periodo    utEntero,
  12. @IdPeriodo  utClave
  13.  
  14. SET nocount ON
  15.  
  16. SELECT @IdPeriodo = Valor FROM P5Sistema WHERE Parametro = 'PeriodoActual' AND Empresa = @Empresa AND Modulo = 'ADI'
  17.  
  18. SELECT @Anio = Anio, @Periodo = Periodo FROM Periodo WHERE id = @IdPeriodo
  19.  
  20. IF (isnull(@Clase,'')<>''
  21.     OR isnull(@Grupo,'')<>''
  22.     OR isnull(@Familia,'')<>''
  23.     OR isnull(@Articulo,'')<>'')
  24. BEGIN
  25.     SELECT A.ArticuloFamilia, A.Clave AS Articulo, A.Texto1 AS NoParte, A.ArticuloTipo,
  26.         A.texto2 AS NotasCompras, A.Descripcion, A.ArticuloClase, AC.CostoPromedio,
  27.         isnull((SELECT Top 1 (1-(ED.pctDescuento/100))*ED.Precio
  28.                 FROM EntradaDetalle ED, EntradaEncabezado EE
  29.                 WHERE ED.Empresa = EE.Empresa
  30.                     AND ED.Folio = EE.Folio
  31.                     AND EE.Documento = 'ECPAM'
  32.                     AND EE.Estatus = 'A'
  33.                     AND ED.Articulo = A.Clave
  34.                 ORDER BY EE.FechaCaptura DESC),0) AS UltimoCosto,
  35.         isnull((SELECT SUM(Existencia) FROM ArticuloExistencia WHERE Empresa = @Empresa AND Articulo = A.Clave AND IdPeriodo = @IdPeriodo AND Almacen LIKE '0%'),0) AS Existencia,
  36.         isnull((SELECT SUM(OrdenadaVenta) FROM ArticuloSaldoAlmacen WHERE Articulo = A.Clave),0)AS OrdenadaVenta, A.MaximoAlmacenable AS Maximo, A.MinimoSeguridad AS Minimo,
  37.         A.PuntoReorden, A.ArticuloGrupo, A.Numero1 AS Precio1, A.Numero2 AS Precio2, A.Numero3 AS Precio3,
  38.         isnull((SELECT Top 1 FE.Fecha FROM FacturaEncabezado FE, FacturaDetalle FD WHERE FE.Empresa = FD.Empresa AND FE.Folio = FD.Folio AND FE.Empresa = @Empresa AND FD.Articulo = A.Clave AND FE.Estatus='A' ORDER BY FechaCaptura DESC),'19990101') AS FechaUltMov
  39.     FROM ArticuloCosto AC,
  40.         Articulo A
  41.     WHERE A.Clave = AC.Articulo
  42.         AND AC.Anio = @Anio
  43.         AND AC.Periodo = @Periodo
  44.     ORDER BY A.Clave
  45. END
  46. ELSE
  47. BEGIN
  48.     SELECT A.ArticuloFamilia, A.Clave AS Articulo, A.Texto1 AS NoParte, A.ArticuloTipo,
  49.         A.texto2 AS NotasCompras, A.Descripcion, A.ArticuloClase, AC.CostoPromedio,
  50.         isnull((SELECT Top 1 (1-(ED.pctDescuento/100))*ED.Precio
  51.                 FROM EntradaDetalle ED, EntradaEncabezado EE
  52.                 WHERE ED.Empresa = EE.Empresa
  53.                     AND ED.Folio = EE.Folio
  54.                     AND EE.Documento = 'ECPAM'
  55.                     AND EE.Estatus = 'A'
  56.                     AND ED.Articulo = A.Clave
  57.                 ORDER BY EE.FechaCaptura DESC),0) AS UltimoCosto,
  58.         isnull((SELECT SUM(Existencia) FROM ArticuloExistencia WHERE Empresa = @Empresa AND Articulo = A.Clave AND IdPeriodo = @IdPeriodo AND Almacen LIKE '0%'),0) AS Existencia,
  59.         isnull((SELECT SUM(OrdenadaVenta) FROM ArticuloSaldoAlmacen WHERE Articulo = A.Clave),0)AS OrdenadaVenta, A.MaximoAlmacenable AS Maximo, A.MinimoSeguridad AS Minimo,
  60.         A.PuntoReorden, A.ArticuloGrupo, A.Numero1 AS Precio1, A.Numero2 AS Precio2, A.Numero3 AS Precio3,
  61.         isnull((SELECT Top 1 FE.Fecha FROM FacturaEncabezado FE, FacturaDetalle FD WHERE FE.Empresa = FD.Empresa AND FE.Folio = FD.Folio AND FE.Empresa = @Empresa AND FD.Articulo = A.Clave AND FE.Estatus='A' ORDER BY FechaCaptura DESC),'19990101') AS FechaUltMov
  62.  
  63.     INTO #ArticuloCaracteristica
  64.     FROM ArticuloCosto AC,
  65.         Articulo A
  66.     WHERE A.Clave = AC.Articulo
  67.         AND AC.Anio = @Anio
  68.         AND AC.Periodo = @Periodo
  69.     ORDER BY A.Clave
  70.  
  71.     IF isnull(@Clase,'') <> ''
  72.     BEGIN
  73.         DELETE #ArticuloCaracteristica WHERE ArticuloClase <> @Clase
  74.     END
  75.  
  76.     IF isnull(@Grupo,'')<> ''
  77.     BEGIN
  78.         DELETE #ArticuloCaracteristica WHERE ArticuloGrupo <> @Grupo
  79.     END
  80.  
  81.     IF isnull(@Familia,'')<> ''
  82.     BEGIN
  83.         DELETE #ArticuloCaracteristica WHERE ArticuloFamilia <> @Familia
  84.     END
  85.  
  86.     IF isnull(@Articulo,'')<> ''
  87.     BEGIN
  88.         DELETE #ArticuloCaracteristica WHERE Articulo NOT LIKE ltrim(rtrim(@Articulo))+'%'
  89.     END
  90.  
  91.     SELECT * FROM #ArticuloCaracteristica
  92. END
  #2 (permalink)  
Antiguo 27/10/2010, 11:27
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Filtrar un SP

Buenos días Inicia:

¿Estás seguro que con los parámetros que le envías al SP entra por el ELSE?, por lo que comentas creo que siempre está entrando por la parte del IF, por lo tanto no realiza ninguna eliminación.

Te recomiendo que pongas algunos print para ver el flujo de ejecución de tu procedimiento almacenado, para verificar que entre en las opciones que quieres.

Por otro lado no sé por qué utilizas esto IF isnull(@Grupo,'')<> '', si puedes preguntar directamente así

Código SQL:
Ver original
  1. IF @Grupo IS NOT NULL

Saludos y espero que pronto encuentres el error
Leo.
  #3 (permalink)  
Antiguo 28/10/2010, 15:08
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Filtrar un SP

Si no me equivoco de esa manera cubre 2 valores: en blanco y nulo.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: filtrar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:33.