Foros del Web » Programación para mayores de 30 ;) » .NET »

Cómo hago una búsqueda inteligente con una sentencia sql y en c#?

Estas en el tema de Cómo hago una búsqueda inteligente con una sentencia sql y en c#? en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/02/2015, 18:29
 
Fecha de Ingreso: diciembre-2013
Mensajes: 24
Antigüedad: 10 años, 11 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();
        }
  #2 (permalink)  
Antiguo 27/02/2015, 00:37
 
Fecha de Ingreso: junio-2011
Ubicación: Mexicali, BC
Mensajes: 17
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Cómo hago una búsqueda inteligente con una sentencia sql y en c#?

Puedes realizar lo siguiente en la clausula WHERE, te pongo el ejemplo para uno de los filtros, para los demas solo ocupas repetir...

De que sirve esto? sirve para que solo filtre la informacion por aquellos parametros que le envies con algun valor..

Código C:
Ver original
  1. string perId = comboBox1.SelectedValue;
  2. string deptId = comboBox2.SelectedValue;
  3. comando.CommandText =
  4. "select idacta, PE.nombrePeriodo, DE.nombreDpto, MA.nombreMateria, PR.nombreProfesor, TS.nombreTipoSemestre, grupo, clave, folio, ruta " +
  5.                                    "from Actas A join Periodos PE on A.idperi = PE.idperi " +
  6.                                    "join Departamentos DE on A.iddpto = DE.iddpto " +
  7.                                    "join Materias MA on A.idmate = MA.idmate " +
  8.                                    "join Profesores PR on A.idprofe = PR.idprofe " +
  9.                                    "join TipoSemestre TS on A.idtiposem = TS.idtiposem " +
  10.                                  
  11.  
  12.  "WHERE (('" + perId + "' = '') OR (idperi= '" + perId + "')) AND
  13. (('" + deptId + "' = '') OR (iddpto= '" + deptId + "')) AND
  14. ...................

Si no seleccionaste un periodo en tu ComboBox entonces traera toda la informacion, si si le enviaste un periodo, te traera solo la informacion referente a ese periodo, y asi sucesivamente con los demas filtros, suerte.

Saludos

Última edición por iPaNiiCx; 27/02/2015 a las 00:46
  #3 (permalink)  
Antiguo 27/02/2015, 09:02
Avatar de giovani_loera  
Fecha de Ingreso: mayo-2011
Ubicación: Tijuana
Mensajes: 225
Antigüedad: 13 años, 6 meses
Puntos: 21
Respuesta: Cómo hago una búsqueda inteligente con una sentencia sql y en c#?

Estoy de acuerdo con iPaNiiCx, respecto a las condiciones en el where.

Ya que tienes la consulta, te recomiendo que utilices StoreProcedure (SP)
en sql.

Los SP son como metodos, donde le puedes mandar parametros, declarar
variables, condiciones ,etc como si fuera un metodo en c#.
Pero claro con la sintaxis de SQL.

De igual manera dentro de los SPs puedes hacer todas las sintaxis de sql, como son: Insert,Update,delete,select, etc.

Etiquetas: combobox, inteligente, sentencia, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:00.