Hola!
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:
@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
Lo extraño es que la busqueda por palabra clave no me funciona, me manda el siguiente error:
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:
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);
}
}
Alguna idea de que es lo que esté pasando???