como puedo generar un filtro por uno de esos dos campos,pero a la ves hacer otro filtro con esos dos campos llenos?
así es como tengo el código actual. pero al llenar los dos campos me marca error. si pongo el filtro por solo un campo de esos que marque si me corre el código.
where T1.[Quantity] != 0 and T1.[WhsCode] between [%1] and [%2] or (T1.[itemcode] = [%3] and T1.[WhsCode] = [%4])
SELECT
T0.ItemCode as 'ID Articulo',
T0.ItemName as 'Descripcion',
T1.BatchNum as '# Lote',
T1.WhsCode as 'ID Almacen',
T1.Quantity as 'Cantidad',
T0.InvntryUom as 'Uom Inventario',
T0.Lastpurprc as 'Precio OITM',
T0.Lastpurcur as 'Moneda',
(T1.Quantity * T0.Lastpurprc) as 'Valor de inventario'
from OITM T0
inner join OIBT T1 ON T0.ItemCode = T1.ItemCode
where T1.Quantity != 0 and T1.WhsCode between [%1] and [%2] or (T1.itemcode = [%3] and T1.WhsCode = [%4])`Texto preformateado`
Hola, difícilmente (al menos yo no conozco como ) puedes heredar filtros en una consulta hecha en el Query Manager.
Tienes una incongruencia en la declaración del where ya que colocas un between para indicar el rango de almacén a almacén y vuelves a preguntar el almacén en la variable [%4], para que esto sea funcional deberás colocar una variable mas de tipo decisión para determinar cuando utilizarás las variables [%1] y [%2] y cuando las variables [%3] y [%4]
Yo te recomendaría hacer un informe y con ayuda de tokens heredar el filtro que necesites, aquí un vídeo que habla de ello, espero sea de utilidad.
tengo una tabla con ciertos datos y quiero generar filtros por columna. ya tengo 4 filtros uno por rango que son los primeros dos filtros;
T1.WhsCode between [%1] and [%2]
*Codigo de almacen
*Codigo de almacen
y otros dos, por valores iguales;
(T1.itemcode = [%3] and T1.WhsCode = [%4])
*numero de articulo
*código de almacén
en estos filtros es donde quiero que haga lo que digo, si solo pongo un filtro en numero de articulo me haga el filtro sin necesidad de llenar el filtro por código de almacén.
Actualmente si lleno solo uno de esos filtros me arroja un mensaje que dice no se encontraron datos.
Entonces la consulta esta bien, pensé que te arrojaba un error, mas bien esa condición no se esta cumpliendo en ningún momento, o tal vez el problema sea en tus inner o la otra es que debes colocar tal cual esta en los campos la información ya que estas manejando el =
Tienes como lo dijo el compañero @pcarrasco incongruencia, estas solicitando datos repetidos en el query, T1.WhsCode no comprendo porque lo estas repitiendo en el valor [%1] [%2] y [%4]
No se si lo que quieres en realidad es delimitar un rango desde el almacén x al z, y desde el articulo aa al cc por ejemplo. inténtalo así si quieres que se cumplan las dos condiciones si no solo cambia al or
SELECT
T0.ItemCode as 'ID Articulo',
T0.ItemName as 'Descripcion',
T1.BatchNum as '# Lote',
T1.WhsCode as 'ID Almacen',
T1.Quantity as 'Cantidad',
T0.InvntryUom as 'Uom Inventario',
T0.Lastpurprc as 'Precio OITM',
T0.Lastpurcur as 'Moneda',
(T1.Quantity * T0.Lastpurprc) as 'Valor de inventario'
from OITM T0
inner join OIBT T1 ON T0.ItemCode = T1.ItemCode
where T1.Quantity != 0 and (T1.WhsCode between [%1] and [%2]) and /*or*/ (T1.itemcode between [%3] and [%4])