PDA

Ver la Versión Completa : Hacer consultas con muchos filtros posibles


JairoC
07-09-2012, 04:15:06
Hola gente del foro!!! Estoy haciendo un sistemita de encuestas.... Y en las consultas no le entiendo mucho...
Por ejemplo quiero que me aparezcan las personas MAYORES a 50, que sean MASCULINAS, QUE NO POSEAN OBRA SOCIAL, ETC... TODOS LOS FILTROS POSIBLES..
Algunos de los campos que tengo son:
EDAD, SEXO, OBRASOCIAL, LIMITACIONPARAVER... Son muchos...

Quisiera que me ayuden... Un saludo!!!

Caral
07-09-2012, 04:25:17
Hola
No entiendo cual es la ayuda que necesitas.
Me imagino que tienes un edit o un combobox por cada campo y que dependiendo de se contenido se hara el filtro???
saludos

JairoC
07-09-2012, 04:30:29
Perdón, no me expliqué bien.. Así es tengo muchos combobox, uno para cada campo de la base de datos...

Caral
07-09-2012, 04:36:01
Hola
Y que necesitas ?
La sentencia sql para el filtro por query ?.
hacerlo por filtro por table ?
No dices que bd usas ni das muchas explicaciones, recuerda, mientras mas expliques mas sencillo sera tratar de ayudar.
saludos

JairoC
07-09-2012, 04:40:07
La sentencia para un Query... Uso firebird... uso los dataset, datasourse, query..

Caral
07-09-2012, 04:47:35
Hola
para esto necesitas que los combobox esten llenos, osea que todos tengan algun dato, de lo contrario te dara un error:


IBQuery1.SQL.Text := 'Select * from TUTABLA where EDAD :E, SEXO = :S, OBRASOCIAL = :O, LIMITACIONPARAVER = :L';
IBQuery1.Params[0].Value := Combobox1.Text;
IBQuery1.Params[1].Value := Combobox2.Text;
IBQuery1.Params[2].Value := Combobox3.Text;
IBQuery1.Params[3].Value := Combobox4.Text;
IBQuery1.Open;


esto con cada campo que quieres ver en la consulta.
Espero lo entiendas.
saludos

JairoC
07-09-2012, 04:52:02
Si, eso tambien puede suceder de que no selleccione un combobox... Y quiera saber solamente dos parámetros.. A eso quiero llegar de que haya combobox sin elegir...

Caral
07-09-2012, 04:55:05
Hola
Primero tendrias que revisar que combobox estan llenos, osea, no en blanco.
despues dependiendo de los que esten llenos revisar a que campo corresponde cada combobox
Luego hacer la consulta especificando solo los que esten llenos, segun su campo.
Dificil, pero no imposible.
Saludos

JairoC
07-09-2012, 04:59:10
Si, va ser bastante difícil... POrque es una sistema de encuestas para personas en las cuales lleva muchos campos... Muchas gracias por tu ayuda!!! Voy a poner le código en un botón... Le parece?

Caral
07-09-2012, 05:00:57
Hola
Bien.
Saludos

Caral
07-09-2012, 05:03:39
Hola
Se me ocurre que podrias crear edits en ejecucion dependiendo de si se modifica (osea cambia) un combobox determinado.
no seri tampoco sencillo pero tal vez mas viable.
Saludos

JairoC
07-09-2012, 05:04:01
Saludos! Y gracias por la buena honda!

Caral
07-09-2012, 05:09:10
Hola
Pon el codigo del boton, ya es tarde, mañana lo veo.
No te preocupes, aqui hay muchos maestros que te ayudaran mucho mejor que yo.
saludos

JairoC
07-09-2012, 17:36:01
Hola Amigo!!! Lo pude solucionar!!! Lo que hice fue lo siguiente:
Creé una variable tipo String, a la cual le asigné una consulta que no se modifica:

Var
ConsultaGeneral:String
begin
ConsultaGeneral:=' Select * from Personas';
end;

Luego en el botón, lo siguiente:

with (DM2.General)do
begin
if ComboBox_SEXO.Text <>'' then
ConsultaGeneral:= ConsultaGeneral + ' and SEXO STARTING WITH :SEXO ';
if Edit_EdadEntre.Text<>'' then
ConsultaGeneral:=ConsultaGeneral + 'and EDAD BETWEEN :EdadDesde ';
if Edit_EdadHasta.Text<>'' then
ConsultaGeneral:=ConsultaGeneral + ' and :EdadHasta ';
if ComboBox_Cobertura.Text<>'' then
ConsultaGeneral:=ConsultaGeneral + 'and COBERTURA starting with :Cobertura';
SQL.Clear;
sql.Add(ConsultaGeneral);
if ComboBox_SEXO.Text <>'' then
ParamByName('Sexo').Value:=ComboBox_SEXO.Text;
// Y ASÍ CON TODOS LOS QUE TENGO
Open;


MUchas gracias de nuevo por su ayuda!!! Abrazos!!!

Caral
07-09-2012, 23:00:30
Hola
Yo usaria combobox en todos
Saludos