Parametro Null en Datawindow
Publicado por lissi (20 intervenciones) el 13/07/2006 03:40:17
Hola Programadores estoy trabajando con una bd SQL Server 2000 y tengo un procedimiento con 3 parametros uno de ellos es un parametro opcional (abajo les pongo el procedimiento) he relacionado mi procedimiento a un datawindow, mi problema es como le paso los parametros ya que no se como ponerle el parametro opcional.
Arreglo es mi parametro opcional
He probado asi pero cuando arreglo='' falla dice que falta un parametro
if arreglo = '' then
dw_2.retrieve(ldt_desde, ldt_hasta)
else
dw_2.retrieve(ldt_desde, ldt_hasta,arreglo)
end if
Entonces probe asi y tambien falla
if arreglo = '' then
dw_2.retrieve(ldt_desde, ldt_hasta,'')
else
dw_2.retrieve(ldt_desde, ldt_hasta,arreglo)
end if
Porfavor ayudenme
Graxias
alter PROC SP_REP_VENTAS
@FECINI AS DATETIME,
@FECFIN AS DATETIME,
@TIPO VARCHAR(255) =NULL
AS
IF @TIPO IS NULL
BEGIN
EXEC('
SELECT D.CODIGOPRODUCTO AS PRODUCTO,
MIN(P.DESCRIPCIONPRODUCTO)AS DESCRIPCION,
V.CODIGOPERSONAL AS VENDEDOR,
CAST(floor(round (sum( isnull(cantidadunidad,0)) /
case isnull(factor,0) when 0 then 1 else isnull(factor,0)
end,0,1) + sum((isnull(cantidadempaque,0)))) AS VARCHAR)
+ ''.'' +
right(''00'' +
CAST(floor(sum(isnull(cantidadunidad,0)) - round ( sum( isnull(cantidadunidad,0)) /
case isnull(factor,0) when 0 then 1 else isnull(factor,0) end,0,1) *
case isnull(factor,0) when 0 then 1 else isnull(factor,0) end) AS VARCHAR(10)),3) AS UNIDAD
FROM FACTURADETALLE D, PRODUCTO P ,FACTURA F ,CLIENTE C ,VW_VENDEDOR V
WHERE V.CODIGOPERSONAL = F.CODIGOVENDEDOR AND
C.CODIGOCLIENTE = F.CODIGOCLIENTE AND
D.CODIGOPRODUCTO= P.CODIGOPRODUCTO AND
F.CODIGOEMP=D.CODIGOEMP AND
F.TIPODOCUMENTO =D.TIPODOCUMENTO AND
F.NUMEROSERIE = D.NUMEROSERIE AND
F.NUMEROFACTURA= D.NUMEROFACTURA AND
P.CODIGOPROVEEDOR= 000084 AND
F.CODIGOEMP=001 AND
D.CODIGOEMP=001 AND
P.CODIGOEMP=001 AND
F.CODIGOVENDEDOR <> 000001 AND
F.SITUACIONFACTURA <> 90 AND
F.TIPOFACTURA =''F'' AND
F.FECHAFACTURA BETWEEN ''' + @FECINI + ''' AND ''' + @FECFIN + ''' --AND
GROUP BY D.CODIGOPRODUCTO,V.CODIGOPERSONAL,D.FACTOR
ORDER BY D.CODIGOPRODUCTO,V.CODIGOPERSONAL,D.FACTOR')
END
ELSE
EXEC('
SELECT D.CODIGOPRODUCTO AS PRODUCTO,
MIN(P.DESCRIPCIONPRODUCTO)AS DESCRIPCION,
V.CODIGOPERSONAL AS VENDEDOR,
CAST(floor(round (sum( isnull(cantidadunidad,0)) /
case isnull(factor,0) when 0 then 1 else isnull(factor,0)
end,0,1) + sum((isnull(cantidadempaque,0)))) AS VARCHAR)
+ ''.'' +
right(''00'' +
CAST(floor(sum(isnull(cantidadunidad,0)) - round ( sum( isnull(cantidadunidad,0)) /
case isnull(factor,0) when 0 then 1 else isnull(factor,0) end,0,1) *
case isnull(factor,0) when 0 then 1 else isnull(factor,0) end) AS VARCHAR(10)),3) AS UNIDAD
FROM FACTURADETALLE D, PRODUCTO P ,FACTURA F ,CLIENTE C ,VW_VENDEDOR V
WHERE V.CODIGOPERSONAL = F.CODIGOVENDEDOR AND
C.CODIGOCLIENTE = F.CODIGOCLIENTE AND
D.CODIGOPRODUCTO= P.CODIGOPRODUCTO AND
F.CODIGOEMP=D.CODIGOEMP AND
F.TIPODOCUMENTO =D.TIPODOCUMENTO AND
F.NUMEROSERIE = D.NUMEROSERIE AND
F.NUMEROFACTURA= D.NUMEROFACTURA AND
P.CODIGOPROVEEDOR= 000084 AND
F.CODIGOEMP=001 AND
D.CODIGOEMP=001 AND
P.CODIGOEMP=001 AND
F.CODIGOVENDEDOR <> 000001 AND
F.SITUACIONFACTURA <> 90 AND
F.TIPOFACTURA =''F'' AND
F.FECHAFACTURA BETWEEN ''' + @FECINI + ''' AND ''' + @FECFIN + ''' AND
C.CODIGOTIPONEGOCIO IN(' + @TIPO + ')
GROUP BY D.CODIGOPRODUCTO,V.CODIGOPERSONAL,D.FACTOR
ORDER BY D.CODIGOPRODUCTO,V.CODIGOPERSONAL,D.FACTOR')
Arreglo es mi parametro opcional
He probado asi pero cuando arreglo='' falla dice que falta un parametro
if arreglo = '' then
dw_2.retrieve(ldt_desde, ldt_hasta)
else
dw_2.retrieve(ldt_desde, ldt_hasta,arreglo)
end if
Entonces probe asi y tambien falla
if arreglo = '' then
dw_2.retrieve(ldt_desde, ldt_hasta,'')
else
dw_2.retrieve(ldt_desde, ldt_hasta,arreglo)
end if
Porfavor ayudenme
Graxias
alter PROC SP_REP_VENTAS
@FECINI AS DATETIME,
@FECFIN AS DATETIME,
@TIPO VARCHAR(255) =NULL
AS
IF @TIPO IS NULL
BEGIN
EXEC('
SELECT D.CODIGOPRODUCTO AS PRODUCTO,
MIN(P.DESCRIPCIONPRODUCTO)AS DESCRIPCION,
V.CODIGOPERSONAL AS VENDEDOR,
CAST(floor(round (sum( isnull(cantidadunidad,0)) /
case isnull(factor,0) when 0 then 1 else isnull(factor,0)
end,0,1) + sum((isnull(cantidadempaque,0)))) AS VARCHAR)
+ ''.'' +
right(''00'' +
CAST(floor(sum(isnull(cantidadunidad,0)) - round ( sum( isnull(cantidadunidad,0)) /
case isnull(factor,0) when 0 then 1 else isnull(factor,0) end,0,1) *
case isnull(factor,0) when 0 then 1 else isnull(factor,0) end) AS VARCHAR(10)),3) AS UNIDAD
FROM FACTURADETALLE D, PRODUCTO P ,FACTURA F ,CLIENTE C ,VW_VENDEDOR V
WHERE V.CODIGOPERSONAL = F.CODIGOVENDEDOR AND
C.CODIGOCLIENTE = F.CODIGOCLIENTE AND
D.CODIGOPRODUCTO= P.CODIGOPRODUCTO AND
F.CODIGOEMP=D.CODIGOEMP AND
F.TIPODOCUMENTO =D.TIPODOCUMENTO AND
F.NUMEROSERIE = D.NUMEROSERIE AND
F.NUMEROFACTURA= D.NUMEROFACTURA AND
P.CODIGOPROVEEDOR= 000084 AND
F.CODIGOEMP=001 AND
D.CODIGOEMP=001 AND
P.CODIGOEMP=001 AND
F.CODIGOVENDEDOR <> 000001 AND
F.SITUACIONFACTURA <> 90 AND
F.TIPOFACTURA =''F'' AND
F.FECHAFACTURA BETWEEN ''' + @FECINI + ''' AND ''' + @FECFIN + ''' --AND
GROUP BY D.CODIGOPRODUCTO,V.CODIGOPERSONAL,D.FACTOR
ORDER BY D.CODIGOPRODUCTO,V.CODIGOPERSONAL,D.FACTOR')
END
ELSE
EXEC('
SELECT D.CODIGOPRODUCTO AS PRODUCTO,
MIN(P.DESCRIPCIONPRODUCTO)AS DESCRIPCION,
V.CODIGOPERSONAL AS VENDEDOR,
CAST(floor(round (sum( isnull(cantidadunidad,0)) /
case isnull(factor,0) when 0 then 1 else isnull(factor,0)
end,0,1) + sum((isnull(cantidadempaque,0)))) AS VARCHAR)
+ ''.'' +
right(''00'' +
CAST(floor(sum(isnull(cantidadunidad,0)) - round ( sum( isnull(cantidadunidad,0)) /
case isnull(factor,0) when 0 then 1 else isnull(factor,0) end,0,1) *
case isnull(factor,0) when 0 then 1 else isnull(factor,0) end) AS VARCHAR(10)),3) AS UNIDAD
FROM FACTURADETALLE D, PRODUCTO P ,FACTURA F ,CLIENTE C ,VW_VENDEDOR V
WHERE V.CODIGOPERSONAL = F.CODIGOVENDEDOR AND
C.CODIGOCLIENTE = F.CODIGOCLIENTE AND
D.CODIGOPRODUCTO= P.CODIGOPRODUCTO AND
F.CODIGOEMP=D.CODIGOEMP AND
F.TIPODOCUMENTO =D.TIPODOCUMENTO AND
F.NUMEROSERIE = D.NUMEROSERIE AND
F.NUMEROFACTURA= D.NUMEROFACTURA AND
P.CODIGOPROVEEDOR= 000084 AND
F.CODIGOEMP=001 AND
D.CODIGOEMP=001 AND
P.CODIGOEMP=001 AND
F.CODIGOVENDEDOR <> 000001 AND
F.SITUACIONFACTURA <> 90 AND
F.TIPOFACTURA =''F'' AND
F.FECHAFACTURA BETWEEN ''' + @FECINI + ''' AND ''' + @FECFIN + ''' AND
C.CODIGOTIPONEGOCIO IN(' + @TIPO + ')
GROUP BY D.CODIGOPRODUCTO,V.CODIGOPERSONAL,D.FACTOR
ORDER BY D.CODIGOPRODUCTO,V.CODIGOPERSONAL,D.FACTOR')
Valora esta pregunta


0