Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/02/2015, 18:29
irvin93
 
Fecha de Ingreso: diciembre-2013
Mensajes: 24
Antigüedad: 10 años, 4 meses
Puntos: 0
Pregunta Cómo hago una búsqueda inteligente con una sentencia sql y en c#?

hola colegas necesito de su ayuda, tengo esta sentencia donde muestro una tabla actas unida a varias actas más. La ayuda que quiero es en el where, cómo ponerla en código c#, los valores en que selecciono en combobox son los que comparo en el where con cada id de mis tablas para hacer la búsqueda respectiva.

en mi Form tengo 6 combobox y los 6 están en mi comparación dentro del where para la comparación, pero en este caso esta mal para lo que quiero.

lo que pretendo es que haga varias tipos de búsquedas (o búsqueda inteligente o como se llame) ya sea que solo con el combobox de Departamentos (iddpto) y el de Materia (idmate) me muestre todos los valores que está en mi consulta. Pero después otra búsqueda con la comparación de con Periodo (idperi) con Departamento y con el grupo (grupo) y todas las combinaciones que se pueda.

un maestro me comentó que para hacer esto lo podía hacer de esta forma, que el comando.commandText lo meta en varios if anidados, la verdad no tengo idea de como.

ayuda porfis...



Código:
 public void cargarActas()
        {
            string cadenaconexion = @"Data Source=IRVIN-PC;Initial Catalog=itiz;Integrated Security=True";
            SqlConnection conexion = new SqlConnection();
            SqlCommand comando = new SqlCommand();
            SqlDataReader dr;
            conexion.ConnectionString = cadenaconexion;
            comando.Connection = conexion;
            comando.CommandText = "select idacta, PE.nombrePeriodo, DE.nombreDpto, MA.nombreMateria, PR.nombreProfesor, TS.nombreTipoSemestre, grupo, clave, folio, ruta " +
                                   "from Actas A join Periodos PE on A.idperi = PE.idperi " +
                                   "join Departamentos DE on A.iddpto = DE.iddpto " +
                                   "join Materias MA on A.idmate = MA.idmate " +
                                   "join Profesores PR on A.idprofe = PR.idprofe " +
                                   "join TipoSemestre TS on A.idtiposem = TS.idtiposem " +
                                   "where idperi= '" + comboBox1.SelectedValue + "' and iddpto= '" + comboBox2.SelectedValue + "' and idmate= '" + comboBox3.SelectedValue + "' and idprofe= '" + comboBox4.SelectedValue + "'  and idtiposem= '" + comboBox5.SelectedValue + "' and idgrupo= '" + comboBox6.SelectedValue + "'";
                                    
                                    

            comando.CommandType = CommandType.Text;
            conexion.Open();
            dgvActas.Rows.Clear();
            dr = comando.ExecuteReader();

            while (dr.Read())
            {
                int renglon = dgvActas.Rows.Add();
                dgvActas.Rows[renglon].Cells["id_acta"].Value = dr.GetInt32(dr.GetOrdinal("idacta")).ToString();
                dgvActas.Rows[renglon].Cells["id_peri"].Value = dr.GetString(dr.GetOrdinal("nombrePeriodo"));
                dgvActas.Rows[renglon].Cells["id_dpto"].Value = dr.GetString(dr.GetOrdinal("nombreDpto"));
                dgvActas.Rows[renglon].Cells["id_mate"].Value = dr.GetString(dr.GetOrdinal("nombreMateria"));
                dgvActas.Rows[renglon].Cells["id_profe"].Value = dr.GetString(dr.GetOrdinal("nombreProfesor"));
                dgvActas.Rows[renglon].Cells["id_tiposem"].Value = dr.GetString(dr.GetOrdinal("nombreTipoSemestre"));
                dgvActas.Rows[renglon].Cells["grupo"].Value = dr.GetString(dr.GetOrdinal("grupo"));
                dgvActas.Rows[renglon].Cells["clave"].Value = dr.GetString(dr.GetOrdinal("clave"));
                dgvActas.Rows[renglon].Cells["folio"].Value = dr.GetString(dr.GetOrdinal("folio"));
                dgvActas.Rows[renglon].Cells["ruta"].Value = dr.GetString(dr.GetOrdinal("ruta"));
            }

           
            conexion.Close();
        }