En un form tengo por un lado: dos dropdownlist y un boton de buscar y por otro lado tengo un textbox y un boton de buscar
lo que quiero hacer es que el usuario tenga dos opciones de busqueda, una pasando como parametros los valores del selectvalue de los dropdownlist o bien hacer una busqueda por palabra clave según lo que el usuario capture en el textbox.
Tengo un solo storedprocedure para estas dos opciones de búqueda.
los parametros que debo pasar son:
En caso de hacer la busqueda seleccionando un valor de los dropdownlist:
@Ramo = this.ddlRamo.SelectedValue
@Categoria = this.ddlCategoria.SelectedValue
@vTipo= 1 (Se refiere al tipo de busqueda por seleccion de combos)
@txtPalabraClave = this.txtPClave.Text (Aunque aqui no tiene nada)
En caso de hacer la busqueda por palabra clave:
@Ramo = ""
@Categoria = ""
@vTipo = 2 (Se refiere al tipo de busqueda por palabra clave)
@txtPalabraClave = this.txtPClave.Text
y hago la busqueda en el stored de la siguiente manera:
Código:
Lo extraño es que la busqueda por palabra clave no me funciona, me manda el siguiente error:@RamoId int, @CategoriaId int, @Tipo int, @PClave varchar(255) AS IF @Tipo = 1 select * from empresas where ramoId = @RamoId and categoriaId = @CategoriaId order by Empresa IF @Tipo = 2 select * from empresas where Empresa like '%'+ @PClave +'%' or Descripcion like '%'+ @PClave +'%' order by Empresa
Input string was not in a correct format
Este error lo marca solamente cuando primero quiero buscar por palabra clave.
Pero si primero realizo una busqueda seleccionando algo de los combos y despues hago una busqueda por palabra clave, entonces si me muestra bien el resultado...
Este es mi codigo:
Código:
Alguna idea de que es lo que esté pasando??? private void btnBuscar_Click(object sender, System.EventArgs e) { string strConexion = this._appconfig.GetConfig("Conexiones","ContenidoPrueba"); string vRamo = this.ddlRamo.SelectedValue; string vCategoria = this.ddlCategoria.SelectedValue; int vTipo = 1; string PClave = this.txtPClave.Text; FillDataGrid(strConexion, vRamo, vCategoria, vTipo, PClave); } private void FillDataGrid(string strConexion, string vRamo, string vCategoria, int vTipo, string PClave) { // Creamos la conexión sqlConexion = new SqlConnection(strConexion); sqlComando = new SqlCommand("LstEmpresas", sqlConexion); sqlComando.CommandType = CommandType.StoredProcedure; sqlComando.Parameters.Add (new SqlParameter("@Tipo",SqlDbType.Int,4)); sqlComando.Parameters.Add (new SqlParameter("@PClave",SqlDbType.VarChar,255)); sqlComando.Parameters.Add (new SqlParameter("@RamoId",SqlDbType.Int,4)); sqlComando.Parameters.Add (new SqlParameter("@CategoriaId",SqlDbType.Int,4)); sqlComando.Parameters["@RamoId"].Value = vRamo; sqlComando.Parameters["@CategoriaId"].Value = vCategoria; sqlComando.Parameters["@Tipo"].Value = vTipo; sqlComando.Parameters["@PClave"].Value = PClave; sqlConexion.Open(); SqlDataAdapter da = new SqlDataAdapter(sqlComando); //Llenar el Dataset DataSet ds = new DataSet(); da.Fill(ds, "Empresa"); //Ligar el datagrid con la fuente de datos dgEmpresas.DataSource = ds; dgEmpresas.DataMember = "Empresa"; dgEmpresas.DataBind(); sqlComando.Dispose(); sqlConexion.Close(); // Close Connection sqlConexion.Dispose(); } private void btnBuscarPC_Click(object sender, System.EventArgs e) { string strConexion = this._appconfig.GetConfig("Conexiones","ContenidoPrueba"); string vRamo = ""; string vCategoria = ""; int vTipo = 2; string PClave = this.txtPClave.Text; FillDataGrid(strConexion, vRamo, vCategoria, vTipo, PClave); } }