Está en la página 1de 3

/// <summary> /// Clase contenedora del filtro para el SQL /// </summary> public class FiltroSql { ///

<summary> /// Nombre de la columna a filtrar /// </summary> public string nombreColumna { private get; set; } /// <summary> /// valores del filtro:<para/> /// --> Si operador == (Operador.IS o Operador.IS_NOT) entonces valo res = null<para/> /// --> Si operador == Operador.BETWEEN entonces valores = { "valor1 ", "Valor2" }<para/> /// </summary> public string[] valores { private get; set; } /// <summary> /// Enumerador de condicion /// </summary> public Condicion condicion { private get; set; } /// <summary> /// Enumerador de Operador /// </summary> public Operador operador { private get; set; } /// <summary> /// Verifica que el filtro ingresado sea correcto /// </summary> /// <returns>True de ser correcto</returns> public bool FiltroValido() { if (nombreColumna == string.Empty) return false; if (valores == null) return false; if (operador == Operador.BETWEEN) { if (valores.Length != 2) return false; if (valores[0] == null || valores[1] == null) return false; } if (operador == Operador.IN || operador == Operador.NOT_IN) if (valores.Length <= 0) return false; if (operador == Operador.IS || operador == Operador.IS_NOT) if (valores != null) return false; return true; } /// <summary> /// Obtiene el filtro ingresado como parametros en string /// </summary> public string ObtenerFiltro { get { return nombreColumna + " " + ObtenerOperador() + " " + Obt enerValores(); } } private string ObtenerOperador() { string textoOperador = string.Empty; switch (operador) { case Operador.IGUAL: textoOperador = "=";

break; case Operador.MAYOR: textoOperador = ">"; break; case Operador.MENOR: textoOperador = "<"; break; case Operador.MAYOR_IGUAL: textoOperador = ">="; break; case Operador.MENOR_IGUAL: textoOperador = "<="; break; case Operador.DIFERENTE: textoOperador = "<>"; break; case Operador.LIKE: textoOperador = "Like"; break; case Operador.BETWEEN: textoOperador = "Between"; break; case Operador.IN: textoOperador = "In"; break; case Operador.NOT_IN: textoOperador = "Not In"; break; case Operador.IS: textoOperador = "Is"; break; case Operador.IS_NOT: textoOperador = "Is Not"; break; } return (textoOperador + " "); } private string ObtenerValores() { string textoFiltro = string.Empty; switch (operador) { case Operador.BETWEEN: textoFiltro += " '" + valores[0]; textoFiltro += "' and '" + valores[1] + "' "; break; case Operador.IN: textoFiltro = " ("; foreach (string valor in valores) textoFiltro += (valor != null) ? "'" + valor + "'" + "," : "null,"; textoFiltro = textoFiltro.Remove(textoFiltro.Length - 1, 1) + ") "; break; case Operador.IS: textoFiltro = " null "; break; case Operador.IS_NOT: textoFiltro = " null "; break;

default: textoFiltro = (valores[0] == null) ? " null " : (" '" + valores[0] + "' "); break; } return textoFiltro; } } /// <summary> /// Enumeradores de la condicion del SQL /// </summary> public enum Condicion { AND, OR, } /// <summary> /// Enumeradores de los operadores del SQL /// </summary> public enum Operador { IGUAL, MAYOR, MENOR, MAYOR_IGUAL, MENOR_IGUAL, DIFERENTE, LIKE, BETWEEN, IN, NOT_IN, IS, IS_NOT }

También podría gustarte