Hola a todos!!!
Os cuento mi problema, estoy haciendo una pantalla de búsqueda sobre una tabla. Tengo un combo en el que me elijen el criterio de búsqueda y un text donde ponen el valor a buscar. Lo que se me ha ocurrido es definir una constante (que en el ejemplo esta como variable) con la parte de la query en comun y añadir el resto en función de la elección, os paso el código.
SqlCommand c = new SqlCommand();
c.CommandText = "SELECT id, RazonSocial, Direccion, Cp, Nif FROM Clientes "
c.CommandType = CommandType.Text;
c.Connection = conn;
switch (cbCriterio.SelectedIndex)
{
case 0:
c.CommandText += " AND UPPER(RazonSocial) = @razon";
c.Parameters.Add(new System.Data.SqlClient.SqlParameter("@razon", System.Data.SqlDbType.Variant));
c.Parameters["@razon"].Value = "%" + txtValor.Text.ToUpper()+ "%";
break;
default:
c.CommandText += " AND UPPER(Nif) = @Nif";
c.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Nif", System.Data.SqlDbType.VarChar, 9, "Nif"));
c.Parameters["@Nif"].Value = "%" + txtValor.Text.ToUpper()+ "%";
break;
}
daCli.SelectCommand = c;
dsClientes1.Clientes.Clear();
daCli.Fill(dsClientes1);
grid.DataSource = dsClientes1.Clientes;
}
Si ejecuto este código quitando el switch, es decir, sin parametros, funciona ok. Pero poniendo los parámetros, al acer el fill me da este maravilloso error:
"Excepción no controlada del tipo 'System.Data.SqlClient.SqlException' en system.data.dll
Información adicional: Error del sistema."
¿Alguien sabe qué hago mal?