El tema es que le puedo pasar solo una de tres posibles fechas o ninguna,
pero no se como hacer para no tener que escribir (como lo hice abajo) tres
veces dependiendo del campo fecha.
Si alguien me da una mano se lo agradezco.
Bye =)
CREATE PROCEDURE s_Get_PO
(
@po_po varchar(20)=null,
@cus_Name varchar(100)=null,
@for_Name varchar(50)=null,
@inc_Name varchar(50)=null,
@kin_Name varchar(20)=null,
@po_Close char(1)=null,
@po_So varchar(50)=null,
@po_Urgent char(1)=null,
@reg_Name varchar(50)=null,
@CampoFecha varchar(10)=null,
@fDesde datetime=null,
@fHasta datetime=null
)
AS
IF @CampoFecha IS NULL
BEGIN
SELECT * FROM v_PO WHERE
po_po=isnull(@po_po,po_po) AND cus_Name=isnull(@cus_Name,cus_Name) AND
for_Name =isnull(@for_Name,for_Name) AND
inc_Name=isnull(@inc_Name,inc_Name) AND
kin_Name=isnull(@kin_Name,kin_Name) AND po_Close
=isnull(@po_Close,po_Close) AND
( @po_So=po_So or @po_so is null) AND
po_Urgent=isnull(@po_Urgent,po_Urgent) AND
reg_Name=isnull( @reg_Name, reg_Name)
ORDER BY PO_PO
END
IF @CampoFecha='po_DatePO' and @CampoFecha IS NOT NULL
BEGIN
SELECT * FROM v_PO WHERE
po_po=isnull(@po_po,po_po) AND cus_Name=isnull(@cus_Name,cus_Name) AND
for_Name =isnull(@for_Name,for_Name) AND
inc_Name=isnull(@inc_Name,inc_Name) AND
kin_Name=isnull(@kin_Name,kin_Name) AND po_Close
=isnull(@po_Close,po_Close) AND
( @po_So=po_So or @po_so is null) AND
po_Urgent=isnull(@po_Urgent,po_Urgent) AND
reg_Name=isnull( @reg_Name, reg_Name) AND
po_DatePO >= @fDesde and po_DatePO < @fHasta
ORDER BY PO_PO
END
IF @CampoFecha='po_DateSO' and @CampoFecha IS NOT NULL
BEGIN
SELECT * FROM v_PO WHERE
po_po=isnull(@po_po,po_po) AND cus_Name=isnull(@cus_Name,cus_Name) AND
for_Name =isnull(@for_Name,for_Name) AND
inc_Name=isnull(@inc_Name,inc_Name) AND
kin_Name=isnull(@kin_Name,kin_Name) AND po_Close
=isnull(@po_Close,po_Close) AND
( @po_So=po_So or @po_so is null) AND
po_Urgent=isnull(@po_Urgent,po_Urgent) AND
reg_Name=isnull( @reg_Name, reg_Name) AND
po_DateSO >= @fDesde and po_DateSO < @fHasta
ORDER BY PO_PO
END
IF @CampoFecha='po_ETD' and @CampoFecha IS NOT NULL
BEGIN
SELECT * FROM v_PO WHERE
po_po=isnull(@po_po,po_po) AND cus_Name=isnull(@cus_Name,cus_Name) AND
for_Name =isnull(@for_Name,for_Name) AND
inc_Name=isnull(@inc_Name,inc_Name) AND
kin_Name=isnull(@kin_Name,kin_Name) AND po_Close
=isnull(@po_Close,po_Close) AND
( @po_So=po_So or @po_so is null) AND
po_Urgent=isnull(@po_Urgent,po_Urgent) AND
reg_Name=isnull( @reg_Name, reg_Name) AND
po_ETD >= @fDesde and po_ETD < @fHasta
ORDER BY PO_PO
END
Leer las respuestas