cancel
Showing results for 
Search instead for 
Did you mean: 

BUSQUEDA FORMATEADA

Former Member
0 Kudos

HOLA A TODOS.

NECESITO AYUDA CON RESPECTO A UNA BUSQUEDA FORMATEADA, NECESITO QUE EN EL CAMPO DEL ALMACEN SEA EL MISMO QUE TIENE EL ARTICULO DEL DOCUMENTO ANTERIOR, PERO QUE SI ES CREADO SIN TOMARLO DE UN DOCUEMNTO PREVIO ME MUESTR EL ALMACEN LIGADO A LA SERIE DE LA QUE ESTOY HACIENDO EL DOCUMENTO.

AGRADECERIA ALGUNA IDEA.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

YA LOS PRBE POR SEPARADO Y FUNCIONAN PERFECTO EL PROBLEMA ES QUE CON EL IF ME MANDA ERROR DE LA PALABRA CLAVE FOR PERO NO SE A QUE SE DEBA SI NO ESTOY MANEJANDO UN FOR

former_member188440
Active Contributor
0 Kudos

A ver si asi


declare @docbase as int
set @docbase =(select count (baseref) from inv1 a join oinv b on a.docentry=b.docentry where b.docnum in (select $[oinv,docnum]))

begin
 if @docbase>0
SELECT T2.WhsCode
 FROM DBz0404.dbo.ODLN T1
 INNER JOIN DBz0404.dbo.DLN1 T2 ON T1.DocEntry = T2.DocEntry
 WHERE T1.DocEntry =(select $[inv1.baseentry])
 AND T2.ItemCode = (select $[$38.1.0])
 
end
begin
if @docbase=0 

 
Select T0.Code from dbo.[@NSFT_ALMACEN_SUC]  T0
 Inner Join NNM1 T1 on T0.U_Sucursal=T1.SeriesName
 Inner Join OITM T2 on T2.ItemCode = (select $[$38.1.0])
 Where T1.Series = (select $[$88.0.1])
 And T2.U_Tipo_Art =T0.U_Tipo
 
 FROM OINV T0
 WHERE T0.DocNum =(select $[oinv.docnum])
 
 
end

Answers (8)

Answers (8)

Former Member
0 Kudos

YA QUEDO RESUELTO, NADA MAS DALTABA UN SELECT QUE MOSTRARA AL FINAL EL VALOR DE LA VARIABLE.

Declare @docbase As int

Declare @almacen As char(4)

Set @docbase =(Select Count (T0.baseref) From dbo.inv1 T0 Inner Join dbo.oinv T1 on T0.docentry=T1.docentry

Where T1.docnum = $[$8.1.0] AND T0.BaseRef > 0)

if @docbase > 0

begin

SET @almacen = (

SELECT T2.WhsCode

FROM dbo.ODLN T1

INNER JOIN dbo.DLN1 T2 ON T1.DocEntry = T2.DocEntry

WHERE T1.DocEntry =(select T0.BaseEntry from dbo.INV1 T0 join dbo.oinv T1 on T0.docentry=T1.docentry where T1.docnum = $[$8.1.0])

AND T2.ItemCode = $[$38.1.0])

end

if @docbase=0

begin

set @almacen =(

Select T0.WhsCode from dbo.[INV1] T0

join dbo.oinv T1 on T0.docentry=T1.docentry

Where T0.ItemCode =$[$38.1.0] AND T1.docnum = $[$8.1.0])

end

select @almacen

Former Member
0 Kudos

SI LE QUITO EL ELSE NADA MAS CORRE LA OPCION DE ABAJO SE SALTA LA CONDICION DEL IF, AUNQUE TENGA VALOR SALE EL RESULTADO DE LA BUSQUEDA DE ABAJO

former_member188440
Active Contributor
0 Kudos

Ok pruebalos por separado y luego ya corregimos el if

Former Member
0 Kudos

HOLA, MIRA ASI YA CASI CORRE NADA MAS QUE ME MARCA EL ERROR EN LA PALABRA CLAVE FOR, LO CUAL NO SE QUE PASA POR QUE NO TENGO NINGUN FOR

IF (SELECT count(T0.BaseRef)from INV1 t0 WHERE T0.DocEntry = 1048089)>0

BEGIN

SELECT T2.WhsCode

FROM dbo.OINV T00

INNER JOIN dbo.INV1 T0 ON T00.DocEntry = T0.DocEntry

INNER JOIN dbo.ODLN T1 ON T0.BaseRef = T1.DocNum

INNER JOIN dbo.DLN1 T2 ON T1.DocEntry = T2.DocEntry

WHERE T00.DocNum = 1048089 --T0.BaseRef

AND T2.ItemCode = '0646-4001-0024' --$http://$38.1.0

AND T2.LineNum = 0 --$http://$38.1.1

END

ELSE

BEGIN

Select T0.Code from dbo.[@NSFT_ALMACEN_SUC] T0

Inner Join NNM1 T1 on T0.U_Sucursal=T1.SeriesName

Inner Join OITM T2 on T2.ItemCode = '0646-4001-0024'--$http://$38.1.0

Where T1.Series = 12 --$http://$88.0.1

And T2.U_Tipo_Art =T0.U_Tipo

END

former_member188440
Active Contributor
0 Kudos

Del codigo q te pase, quita el ELSE a ver si funciona

Former Member
0 Kudos

ME PONE EL ERROR:

1) INCORRECT SYNTAX NEAR THE KEYWORD FROM

PERO NO ME DICE EN EL FROM DE QUE LINEA ASI QUE SUPONGO QUE ES DE LA PRIMERA.

former_member188440
Active Contributor
0 Kudos

Ok

a ver asi


declare @docbase as int
set @docbase =(select count (baseref) from inv1 a join oinv b on a.docentry=b.docentry where b.docnum in (select $[oinv,docnum]))
if @docbase>0
begin

SELECT T2.WhsCode
 FROM DBz0404.dbo.ODLN T1
 INNER JOIN DBz0404.dbo.DLN1 T2 ON T1.DocEntry = T2.DocEntry
 WHERE T1.DocEntry =(select $[inv1.baseentry])
 AND T2.ItemCode = (select $[$38.1.0])

end
else
if @docbase=0

begin

Select T0.Code from dbo.[@NSFT_ALMACEN_SUC]  T0
 Inner Join NNM1 T1 on T0.U_Sucursal=T1.SeriesName
 Inner Join OITM T2 on T2.ItemCode = (select $[$38.1.0])
 Where T1.Series = (select $[$88.0.1])
 And T2.U_Tipo_Art =T0.U_Tipo
 
 FROM OINV T0
 WHERE T0.DocNum =(select $[oinv.docnum])
 

end

Former Member
0 Kudos

AQUI LE PUSE VALORES DEFINIDOS A LAS VARIABLES PARA HACER DIRECTAMENTE LA PRUEBA EN LA BF.

SELECT

IF (T0.[BaseRef] NOT NULL) THEN

BEGIN

SELECT T2.WhsCode

FROM [DBz0404].[dbo].[ODLN] T1

INNER JOIN [DBz0404].[dbo].[DLN1] T2 ON T1.DocEntry = T2.DocEntry

WHERE T1.DocNum = 1044778 --T0.BaseRef

AND T2.ItemCode = '0646-4001-0024' --$[$38.1.0]

AND T2.LineNum = 0 --$[$38.1.1]

END

ELSE

BEGIN

Select T0.Code from [dbo].[@NSFT_ALMACEN_SUC] T0

Inner Join NNM1 T1 on T0.U_Sucursal=T1.SeriesName

Inner Join OITM T2 on T2.ItemCode = '0646-4001-0024'--$[$38.1.0]

Where T1.Series = 12 --$[$88.0.1]

And T2.U_Tipo_Art =T0.U_Tipo

END

FROM OINV T0

WHERE T0.DocNum = 1048089

former_member188440
Active Contributor
0 Kudos

A ver , intenta asi


IF (SELECT count(T0.BaseRef)from INV1 t0)>0 
 BEGIN
 SELECT T2.WhsCode
 FROM DBz0404.dbo.ODLN T1
 INNER JOIN DBz0404.dbo.DLN1 T2 ON T1.DocEntry = T2.DocEntry
 WHERE T1.DocNum = 1044778 --T0.BaseRef
 AND T2.ItemCode = '0646-4001-0024' --$http://$38.1.0
 AND T2.LineNum = 0 --$http://$38.1.1
 END
 ELSE
 
 Select T0.Code from dbo.@NSFT_ALMACEN_SUC T0
 Inner Join NNM1 T1 on T0.U_Sucursal=T1.SeriesName
 Inner Join OITM T2 on T2.ItemCode = '0646-4001-0024'--$http://$38.1.0
 Where T1.Series = 12 --$http://$88.0.1
 And T2.U_Tipo_Art =T0.U_Tipo
 
 FROM OINV T0
 WHERE T0.DocNum = 1048089
 

Former Member
0 Kudos

TIENES ALGUN EJEMPLO DE ALGUN IF QUE TE HAYA FUNCIONADO EN UNA BF PARA BASARME EN ELLO POR QUE ME MARCA UN ERROR AL INTENTAR AÑADIR EL THEN NO SE POR QUE.

former_member188440
Active Contributor
0 Kudos

Puedes compartir tu codigo? para ver que podrias estar omitiendo

Former Member
0 Kudos

NO, ME REFIERO A QUE SI HAGO UNA FACTURA QUE VIENE DESDE UNA ENTREGA ME JALE EL ALMACEN DE CADA ARTICULO TAL CUAL ESTABAN EN LA ENTREGA, PERO SI LA FACTURA ES REALIZADA SIN ENTREGA QUE ME COLOQUE EL ALMACEN AL QUE PERTENECE LA SERIE.

NECESITO COMO FUNCIONARIA UN IF EN UNA BUSQUEDA FORMATEADA PERO NO TENGO LA CONDICIONAL DIRECTA.

former_member188440
Active Contributor
0 Kudos

Te recomiendo que comiences tu BF validando que el baseentry de tu inv1 este nulo, si es asi entonces que entres a un begin donde traigas el almacen asociado a tu serie (supongo en alguna tabla de usuario o algo podrias apoyarte)

Si no, pues entonces que traiga el whscode de tu dln1 (entrega)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas tardes

Bienvenida al SCN

En que documento necesitas ubicar esta BF?

Con documento anterior, te refieres a buscar el ultimo documento que se hizo con este articulo?

Sin documento previo significa que no tiene un documento base, o me equivoco?

Slds