Hola grupo,
tengo un sp que admite varias combinaciones y para no crear una bestialidad
de codigo que luego no hay que controle he pensado hacerlo con una clausula
WHERE dinamica, mas o menos como expongo, entendiendo que hay tres grupos de
filtro, por un lado está el nivel máximo que se aplica siempre, despues está
el filtro que se puede aplicar a varios campos con el operador LIKE %Texto%
si es cadena o LIKE CONVERT si no lo es, y por ultimo está el filtro de
mostrar todos o solamente los que no han sido baja, es decir los que la
fecha de baja es null, siendo los dos ultimos opcionales del usuario.
He montado el where pero no consigo que me funcione, ¿alguna idea?
Un saludo y gracias por anticipado.
Angel Zapata
WHERE (((@NivelMaximo = 1) AND (Agente.AgeCodigo >0))
OR ((@NivelMaximo = 3) AND (Agente.AgenteZonaCodigo = @Zona))
OR ((@NivelMaximo = 4) AND (Agente.AgenteGerenciaCodigo = @Gerencia))
OR ((@NivelMaximo = 5) AND (Agente.AgenteDelegacionCodigo = @Delegacion))
OR ((@NivelMaximo = 6) AND (Agente.AgenteEquipoCodigo = @Equipo))
OR ((@NivelMaximo = 7) AND (Agente.AgeCodigo = @Promotor)))
AND (((@FiltroEn = 'Codigo') AND (Agente.AgeCodigo = CONVERT(Integer,
@FiltroPor)))
OR ((@FiltroEn = 'Nombre') AND (Agente.AgeApellido1 + ' ' +
Agente.AgeApellido2 + ' ' + Agente.AgeNombre LIKE @FiltroPor ))
OR ((@FiltroEn = 'NIF') AND (Agente.AgeNIF LIKE '%' + @FiltroPor + '%'))
OR ((@FiltroEn = 'Alta') AND (Agente.AgenteFechaAltaCategoria =
CONVERT(DATETIME, @FiltroPor,103)))
OR ((@FiltroEn = 'Baja') AND (Agente.AgenteFechaBajaCategoria =
CONVERT(DATETIME, @FiltroPor, 103)))
OR ((@FiltroEn = 'EMPR') AND (Agente.EmpresaCodigo LIKE '%' + @FiltroPor +
'%'))
OR ((@FiltroEn = 'TRAB') AND (Agente.TrabajadorCodigo LIKE '%' + @FiltroPor
+ '%'))
OR ((@FiltroEn = 'Delegacion') AND (Agente_1.AgeApellido1 + ' ' +
Agente_1.AgeApellido2 + ' ' + Agente_1.AgeNombre LIKE + '%' + @FiltroPor +
'%')))
AND (((@MostrarTodos = 0) AND (Agente.AgenteFechaBajaCategoria IS NULL)))
Leer las respuestas