Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-01-2007
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Consulta con los valores de varios combos

Hola:

Base de datos .. FireBird 1.5
DM .. DataModulo
CB .. ComboBox

Tengo tres ComboBox (CBNivel, CBGrupo, CBEtapa), cada combo tiene varios items incluido siempre uno vacio, por ejemplo el combo etapa tiene 3 opciones: ‘’, ESO, Bachillerato.

Para hacer un listado el usuario puede dejar todos los combos con la opción en blanco (en cuyo caso deberían aparecer listados todos los alumnos) o escoger de alguno de ellos un item con algún valor, por ejemplo del combo nivel ‘1º’, del combo etapa ‘Bachillerato’, en cuyo caso deberían aparecer todos los alumnos de 1º de bachillerato (de cualquier nivel).

Para ello hago la consulta de abajo y me funciona cuando todos los combos tienen puesto algún valor para buscar, pero si se deja alguno con la opción en blanco que tienen no funciona.

Me funciona si escojo en los combos por ejemplo:
Nivel: 2º Grupo: A Etapa: ESO (para listar los alumnos de 2º A ESO)

NO funciona si escojo en los combos:
Nivel: Grupo: Etapa: ESO (para listar los alumnos de cualquier nivel, cualquier grupo, ESO)

Código SQL [-]
DM.IBDSAlumnos.Close;

DM.IBDSAlumnos.SelectSQL.Clear;
DM.IBDSAlumnos.SelectSQL.Add('select * from ALUMNOS');
DM.IBDSAlumnos.SelectSQL.Add(' where NIVEL=:QUENIVEL');
DM.IBDSAlumnos.SelectSQL.Add(' and GRUPO=:QUEGRUPO');
DM.IBDSAlumnos.SelectSQL.Add(' and ETAPA=:QUEETAPA');

DM.IBDSAlumnos.ParamByName('QUENIVEL').AsString := CBNivel.Text;
DM.IBDSAlumnos.ParamByName('QUEGRUPO').AsString := CBGrupo.Text;
DM.IBDSAlumnos.ParamByName('QUEETAPA').AsString := CBEtapa.Text;

DM.IBDSAlumnos.Open;

¿Alguna manera de solucionar esto?. Gracias.

Un saludo.
Responder Con Cita
  #2  
Antiguo 29-01-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
...
DM.IBDSAlumnos.SelectSQL.Clear;
DM.IBDSAlumnos.SelectSQL.Add('select * from ALUMNOS');
if cbNivel.itemIndex=0 then
 DM.IBDSAlumnos.SelectSQL.Add(' where NIVEL like ''%%''')
else
 DM.IBDSAlumnos.SelectSQL.Add(' where NIVEL=:QUENIVEL')
...

Suponiendo que la opción en blanco sea la primera de tu combo.
__________________

Responder Con Cita
  #3  
Antiguo 29-01-2007
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Hola:

Funciona perfectamente de la manera que me indicas. Me queda así.
Código Delphi [-]
  DM.IBDSAlumnos.Close;

  DM.IBDSAlumnos.SelectSQL.Clear;
  DM.IBDSAlumnos.SelectSQL.Add('select * from ALUMNOS');
  if cbNivel.itemIndex=0 then
    DM.IBDSAlumnos.SelectSQL.Add(' where NIVEL like ''%%''')
  else
    DM.IBDSAlumnos.SelectSQL.Add(' where NIVEL=:QUENIVEL');
  if cbGrupo.itemIndex=0 then
    DM.IBDSAlumnos.SelectSQL.Add(' and GRUPO like ''%%''')
  else
    DM.IBDSAlumnos.SelectSQL.Add(' and GRUPO=:QUEGRUPO');
  if cbEtapa.itemIndex=0 then
    DM.IBDSAlumnos.SelectSQL.Add(' and ETAPA like ''%%''')
  else
    DM.IBDSAlumnos.SelectSQL.Add(' and ETAPA=:QUEETAPA');

  if cbNivel.itemIndex>0 then
    DM.IBDSAlumnos.ParamByName('QUENIVEL').AsString := CBNivel.Text;
  if cbGrupo.itemIndex>0 then
    DM.IBDSAlumnos.ParamByName('QUEGRUPO').AsString := CBGrupo.Text;
  if cbEtapa.itemIndex>0 then
    DM.IBDSAlumnos.ParamByName('QUEETAPA').AsString := CBEtapa.Text;

  DM.IBDSAlumnos.Open;

Muchas gracias.

Un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
La operacion en varios pasos generó errores. Compruebe los valores de estado. Cabanyaler Conexión con bases de datos 6 06-08-2007 21:13:15
Declarar tipo que pueda tomar varios valores adpa Varios 4 15-12-2005 13:20:21
Campos de consulta con valores NAN ElDuc SQL 1 12-09-2005 10:28:59
cargar tabla en varios combos Delphos Conexión con bases de datos 2 04-10-2003 19:09:11
Consulta con valores nulos interbase afarenas Firebird e Interbase 4 26-09-2003 17:33:44


La franja horaria es GMT +2. Ahora son las 13:22:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi