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

Crear consulta SQL según checkbox marcados

Estas en el tema de Crear consulta SQL según checkbox marcados en el foro de .NET en Foros del Web. Buenas tardes a todos, el problema que tengo es que la aplicación windows form que tengo creada tiene 6 checkbox. Lo que pretendo hacer es ...
  #1 (permalink)  
Antiguo 15/02/2011, 12:31
 
Fecha de Ingreso: julio-2010
Mensajes: 93
Antigüedad: 13 años, 9 meses
Puntos: 0
Crear consulta SQL según checkbox marcados

Buenas tardes a todos,

el problema que tengo es que la aplicación windows form que tengo creada tiene 6 checkbox.
Lo que pretendo hacer es formar un select de SQL según los checkbox que estén seleccionados.

Si me podeis hechar una mano os lo agradecería. La aplicación es en C#.

Un saludo,

Eloy
  #2 (permalink)  
Antiguo 15/02/2011, 12:55
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Crear consulta SQL según checkbox marcados

Hola eloy_ameneiros

Ya intentaste programarlo? tienes código? donde se te presenta exactamente la problemática?

Saludos!
__________________
http://ka0stj.wordpress.com/
  #3 (permalink)  
Antiguo 15/02/2011, 13:03
 
Fecha de Ingreso: julio-2010
Mensajes: 93
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Crear consulta SQL según checkbox marcados

El problema es que antes tenía radiobuttons en vez de checkbox, por lo que la programación era fácil.

Ahora mismo no tengo programada esa parte, ya que está el código para los radiobuttons, pero supongo que sería recorriendo todos los check del form y viendo cual está marcado para poder agregarlo al select de SQL.

El código que tengo es el siguiente:

private void bt_buscar_Click(object sender, EventArgs e)
{
bt_buscar.Enabled = false;
if (chk_login.Checked == false && chk_telefono.Checked == false && chk_nomtit.Checked == false && chk_fecha.Checked == false &&
chk_codllam.Checked == false && chk_carga.Checked == false)
{
MessageBox.Show("Seleccione un criterio de búsqueda.", "ERROR");
}
else if (chk_login.Checked == true)
{
dt = new DataTable();
string login = txt_login.Text;
string consultaLogin = "SELECT * FROM PREP.PCO_OUTBOUNDQUEUE WHERE LASTAGENT = '" + login + "'";
try
{
da = new SqlDataAdapter(consultaLogin, conexion);
conexion.Open();
da.Fill(dt);
dgv_info.DataSource = dt;
conexion.Close();
}
catch (Exception ex)
{
MessageBox.Show("Se ha producido el siguiente error: " + ex.Message, "ERROR");
}
finally
{
if (conexion.State == ConnectionState.Open)
{
conexion.Close();
}
}
}
else if (chk_telefono.Checked == true)
{
dt = new DataTable();
string telefono = txt_telefono.Text;
string consultaTelefono = "SELECT * FROM PREP.PCO_OUTBOUNDQUEUE WHERE PHONE LIKE '%" + telefono + "%'";
try
{
da = new SqlDataAdapter(consultaTelefono, conexion);
conexion.Open();
da.Fill(dt);
dgv_info.DataSource = dt;
conexion.Close();
}
catch (Exception ex)
{
MessageBox.Show("Se ha producido el siguiente error: " + ex.Message, "ERROR");
}
finally
{
if (conexion.State == ConnectionState.Open)
{
conexion.Close();
}
}
}
else if (chk_nomtit.Checked == true)
{
dt = new DataTable();
string nomtit = txt_nomtit.Text;
string consultaNomtit = "SELECT * FROM PREP.PCO_OUTBOUNDQUEUE WHERE NAME LIKE '%" + nomtit + "%'";
try
{
da = new SqlDataAdapter(consultaNomtit, conexion);
conexion.Open();
da.Fill(dt);
dgv_info.DataSource = dt;
conexion.Close();
}
catch (Exception ex)
{
MessageBox.Show("Se ha producido el siguiente error: " + ex.Message, "ERROR");
}
finally
{
if (conexion.State == ConnectionState.Open)
{
conexion.Close();
}
}
}
else if (chk_fecha.Checked == true)
{
dt = new DataTable();
DateTime fecha = dtp_fecha.Value;
DateTime fecha1 = fecha.AddDays(1);
string consultaFecha = "SELECT * FROM PREP.PCO_OUTBOUNDQUEUE WHERE LASTHANDLINGDATE >= '" + fecha + "' AND LASTHANDLINGDATE <= '" + fecha1 + "'";
try
{
da = new SqlDataAdapter(consultaFecha, conexion);
conexion.Open();
da.Fill(dt);
dgv_info.DataSource = dt;
conexion.Close();
}
catch (Exception ex)
{
MessageBox.Show("Se ha producido el siguiente error: " + ex.Message, "ERROR");
}
finally
{
if (conexion.State == ConnectionState.Open)
{
conexion.Close();
}
}
}
else if (chk_codllam.Checked == true)
{
dt = new DataTable();
string codllam = txt_codllam.Text;
string consultaCodllam = "SELECT * FROM PREP.PCO_OUTBOUNDQUEUE WHERE LASTQCODE = '" + codllam + "'";
try
{
da = new SqlDataAdapter(consultaCodllam, conexion);
conexion.Open();
da.Fill(dt);
dgv_info.DataSource = dt;
conexion.Close();
}
catch (Exception ex)
{
MessageBox.Show("Se ha producido el siguiente error: " + ex.Message, "ERROR");
}
finally
{
if (conexion.State == ConnectionState.Open)
{
conexion.Close();
}
}
}
else if (chk_carga.Checked == true)
{
dt = new DataTable();
string carga = txt_carga.Text;
string consultaCarga = "SELECT * FROM PREP.PCO_OUTBOUNDQUEUE WHERE LOADID = '" + carga + "'";
try
{
da = new SqlDataAdapter(consultaCarga, conexion);
conexion.Open();
da.Fill(dt);
dgv_info.DataSource = dt;
conexion.Close();
}
catch (Exception ex)
{
MessageBox.Show("Se ha producido el siguiente error: " + ex.Message, "ERROR");
}
finally
{
if (conexion.State == ConnectionState.Open)
{
conexion.Close();
}
}
}
bt_buscar.Enabled = true;
}
  #4 (permalink)  
Antiguo 15/02/2011, 13:07
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Crear consulta SQL según checkbox marcados

Ok, no funciona?
Porque probe algo similar y funciona if(checkbox1.Checked == true) { codigo }
__________________
http://ka0stj.wordpress.com/
  #5 (permalink)  
Antiguo 15/02/2011, 13:10
 
Fecha de Ingreso: julio-2010
Mensajes: 93
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Crear consulta SQL según checkbox marcados

Esto si me funciona perfecto, pero lo que necesito es crear un select con los check que hay marcados, que pueden ser 1, 2, 4, etc.

Es decir, recorrer el form y ver que hay marcado para ir anexando el check al select.
  #6 (permalink)  
Antiguo 15/02/2011, 13:21
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Crear consulta SQL según checkbox marcados

Ya le echaste un ojo a consultas dinámicas?

http://pedroafa.blogspot.com/2006/08/sql-dinmico.html
__________________
http://ka0stj.wordpress.com/
  #7 (permalink)  
Antiguo 15/02/2011, 13:24
 
Fecha de Ingreso: julio-2010
Mensajes: 93
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Crear consulta SQL según checkbox marcados

El problema no está en el sql, sino en recorrer los check del form para ver cuales están marcados y cuales no.

Si consigo hacer eso, me creo una consulta de sql, a la que le voy agregando la info de cada check marcado.
  #8 (permalink)  
Antiguo 15/02/2011, 13:39
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Crear consulta SQL según checkbox marcados

Lo puedes recorrer de la siguiente manera:

Código c#:
Ver original
  1. foreach (System.Windows.Forms.Control ElControl in this.Controls)
  2.             {
  3.                 if (ElControl is System.Windows.Forms.CheckBox)
  4.                 {
  5.                     if (((CheckBox)ElControl).Checked == true)
  6.                     {
  7.                         MessageBox.Show(ElControl.Name.ToString());
  8.                     }
  9.                 }
  10. }
__________________
http://ka0stj.wordpress.com/
  #9 (permalink)  
Antiguo 15/02/2011, 13:58
 
Fecha de Ingreso: julio-2010
Mensajes: 93
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Crear consulta SQL según checkbox marcados

Me podrías explicar más o menos como funciona ese código. Gracias.
  #10 (permalink)  
Antiguo 15/02/2011, 14:06
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Crear consulta SQL según checkbox marcados

- Con el ciclo recorres todos los controles que existen en el formulario
- El primer if checa si los controles que esta recorriendo en el formulario son CheckBox
- Si son CheckBox entra al otro if y verifica si los checkbox estan seleccionados y manda el mensaje de los Checkbox seleccionados.

Obviamente que lo adaptarias a tus necesidades, espero haber sido claro.

Saludos!
__________________
http://ka0stj.wordpress.com/

Etiquetas: checkbox, 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 02:45.