Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-06-2008
Avatar de zeta2
zeta2 zeta2 is offline
Miembro
 
Registrado: feb 2007
Posts: 95
Poder: 18
zeta2 Va por buen camino
Filtrar un campo en un ComboBox

Amigos, tengo un problemita con un filtro, he leído otros posts donde hablan de ello, pero no es exactamente lo que busco, he intentado usar la lógica para darle forma a lo mío pero me cuesta un poquito... A ver si me pueden ayudar.

Tengo una tabla llamada TBConsulta, los campos que deseo filtrar son:

Apellido
Nombres
DNI
Materia


La idea es filtrar el apellido de alguien en un Combobox llamado CBBuscar.

Yo a esto lo había hecho una ves, pero hace mucho tiempo y la verdad no me acuerdo.

Desde ya muchas gracias...
Responder Con Cita
  #2  
Antiguo 12-06-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me parece que este ejemplo hacia lo que necesitas.
Saludos
Responder Con Cita
  #3  
Antiguo 12-06-2008
Avatar de Fenareth
[Fenareth] Fenareth is offline
Miembro Premium
 
Registrado: oct 2007
Ubicación: Guadalajara, Jalisco, México
Posts: 494
Poder: 17
Fenareth Va por buen camino
Hola zeta2

Perdón, no comprendí muy bien... En el combobox escoges el apellido por el que vas a filtrar ?...

Si es de esta manera puedes hacer un filtro de la Tabla donde le digas que te muestre todos los apellidos que coincidan con el que buscas (me imagino que habrá más de uno)...

Código Delphi [-]
TablaOpen;
        Tabla.Filter := 'CAMPO = '+QuotedStr(Combobox.Text);
        Tabla.Filtered := TRUE;

Si no es esto lo que necesitas, podrías ser un poco más detallado ?

Saludos
Responder Con Cita
  #4  
Antiguo 12-06-2008
Avatar de zeta2
zeta2 zeta2 is offline
Miembro
 
Registrado: feb 2007
Posts: 95
Poder: 18
zeta2 Va por buen camino
Si, al apellido lo saco de un ComboBox, despues veo como inserto un campo entero en un ComboBox...

Voy a probar sus ideas y luego les cuento... =)
Responder Con Cita
  #5  
Antiguo 13-06-2008
Avatar de zeta2
zeta2 zeta2 is offline
Miembro
 
Registrado: feb 2007
Posts: 95
Poder: 18
zeta2 Va por buen camino
Seeeeeeeeeeeeeee!!!

Ven que era algo tonto? Gracias Fenareth y [Caral]...

Ahora investigaré como meter todo un campo en un ComboBox... Gracias... Cualquier cosa consulto...

Por otra parte quería a consultarle a Caral como hago para ser un Miembro Premium...

Gracias...
Responder Con Cita
  #6  
Antiguo 13-06-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Empezado por zeta2 Ver Mensaje
Por otra parte quería a consultarle a Caral como hago para ser un Miembro Premium...

Gracias...
Para hacerse un Miembro Premium lo único que se necesita es cumplir con cualquiera de estas opciones:
1- Ser un miembro activo
2- Tener un mínimo de 400 post (manteniendo continuidad)
3- Ser nominado por otro Miembro Premium.
4- Haber ayudado tanto como te ayudan (devolver lo aprendido)
5- Comentarle tu interés a algún moderador y poner cara de triste.
6- Hacerle un click al logo de PayPal y donar (esto ayuda pero se tendrá que cumplir con alguno de los otros sobre todo el 2 y 3).
Es lo que se me ocurre por lo que he leído.
Lo mejor es que comiences por el punto 5, tal vez tengas suerte.
Saludos
Responder Con Cita
  #7  
Antiguo 13-06-2008
Avatar de zeta2
zeta2 zeta2 is offline
Miembro
 
Registrado: feb 2007
Posts: 95
Poder: 18
zeta2 Va por buen camino
No es por nada Caral, mas me intereza saber si hay manera de aportar, ya que estuve tantos años recurriendo a la ayuda de Club Delphi, solo quería saber si podía apoyar en algo al foro. Reconozco que no he ayudado mucho, ahora, lo haré mas seguido, ya que vuelvo a programar. Hace mucho tiempo no programo y ahora retomo.

Primero, antes de hablar con algún moderador debería dar el ejemplo no creen? XD

Bueno, apenas pueda aportar algo lo haré. Gracias por la ayuda.
Responder Con Cita
  #8  
Antiguo 23-06-2008
Rancy Rancy is offline
Miembro
 
Registrado: may 2008
Posts: 17
Poder: 0
Rancy Va por buen camino
Cita:
Empezado por Fenareth Ver Mensaje

Código Delphi [-]
Tabla.Open;
        Tabla.Filter := 'CAMPO = '+QuotedStr(Combobox.Text);
        Tabla.Filtered := TRUE;

Saludos
Gracias por la respuesta que le diste a zeta Fenareth, a mi tambien me ha sido muy útil.

Queria preguntar si, a parte, existe la posibilidad de filtrar la tabla de modo que muestre todos los registros que coinciden parcialmente con el string según el que se filtra.
Lo diré de otro modo por si no me he explicado bien:
el caso es que mi código, vendria a ser en parte asi:

Código Delphi [-]
TablaOpen;
        Tabla.Filter := 'CAMPO = '+QuotedStr(Edit.Text);
        Tabla.Filtered := TRUE;

Como veis la diferencia es que uso un Edit con el que dejo introducir al usuario el string según el que filtrar. Lo que pregunto es si es posible que introduciendo por ejemplo "CA" el filtro haga visibles todos aquellos campos que empiecen asi (por ejemplo: Carla, Carlos, Carmen, etc...)

Lo cierto es que he estado buscando en la ayuda de delphi, y he encontrado en la información sobre el member FilterOptions, por defecto la opcion de buscar según sólo una parte del string esta activada para todos los strings que terminen en asterisco (*). Lo que hago entonces es introducir un asterisco así;

Código Delphi [-]
TablaOpen;
        Tabla.Filter := 'CAMPO = '+QuotedStr(Edit.Text+'*');
        Tabla.Filtered := TRUE;

Pero tampoco consigo que se solucione de este modo, por eso queria preguntar si a alguien se le ocurre que puedo estar haciendo mal, si tal vez no es posible lo que intento, o si se hace de otro modo.

Gracias por adelantado a todos quienes se tomen la molestia de contestarme.

Saludos!

Última edición por Rancy fecha: 23-06-2008 a las 11:35:59. Razón: Para ver mejor el quote de fenareth
Responder Con Cita
  #9  
Antiguo 23-06-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
rancy yo te recomiendo siempre utilizar consultas, ya que asi no te traes todos los registros del servidor y los "filtras" en el propio servidor. Pero si aun sigues empeñado en hacerlo mediante filtros je je je primero me tendrás que decir con que BD trabajas si es con mysql, interbase.. etc el comodin es % de tal manera que, aparte de utilizar el like, quedaría asi:

Código:
Adotable1.filtered:=false;
Adotable1.filter:='Desc_Cliente'+' like ' + QuotedStr(Edit1.Text+'%');
Adotable1.filtered:=true;
Saludos, Tony
Responder Con Cita
  #10  
Antiguo 25-06-2008
Rancy Rancy is offline
Miembro
 
Registrado: may 2008
Posts: 17
Poder: 0
Rancy Va por buen camino
Muchas gracias! Me funcionó perfectamente.

Bueno olvidé decir como guardo los datos es cierto. Esque necesito una aplicación lo mas simple posible, que pueda funcionar en pc's sin instalar nada; por eso, y porque la información es poca; lo guardo todo en XML.

De nuevo te agradezco tu ayuda, que me fué muy útil!
Responder Con Cita
  #11  
Antiguo 02-07-2008
Rancy Rancy is offline
Miembro
 
Registrado: may 2008
Posts: 17
Poder: 0
Rancy Va por buen camino
Respecto al mismo tema, tengo una duda mas. Cual seria la expresion equivalente a QuotedStr, si lo que contiene la variable que hay a continuación es un entero?

Pongo aqui la parte del codigo, por si ayuda a entender mi duda:
Código Delphi [-]
procedure TForm2.EditCampoBuscarChange(Sender: TObject);
var
anyo: integer;
begin
  DadesClients.Open;
  DadesClients.Filter := ((ComboboxCampoBuscar.Text + ' like '+ QuotedStr(EditCampoBuscar.Text+'%')) +'and Edad <'+ (anyo));
  DadesClients.Filtered := TRUE;
end;
El error dice que los tipos string & integer son incompatibles ( refiriendose al campo Edad, que es un entero, y a la variable anyo, que también lo es. Como doy a entender que debe tratarlos como tales y no como string?

Gracias por adelantado. :-)
Responder Con Cita
  #12  
Antiguo 02-07-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
El campo edad en tu bd será un entero pero tu estás componiendo un string en la propiedad filter de tu dataset, que es de tipo string. Con lo que todo lo que metas en esa propiedad debe ser un string, y lo único que lo diferencia son las comillas (quotes) cuando tu campo es varchar o sin comillas cuando es numérico. De tal forma que:

Código:
procedure TForm2.EditCampoBuscarChange(Sender: TObject);
var
anyo: integer;
begin
  DadesClients.Open;
  DadesClients.Filter := ((ComboboxCampoBuscar.Text + ' like '+ 
  QuotedStr(EditCampoBuscar.Text+'%')) +'and Edad <'+ inttostr(anyo));
  DadesClients.Filtered := TRUE;
end;
Saludos, Tony
Responder Con Cita
  #13  
Antiguo 02-07-2008
Rancy Rancy is offline
Miembro
 
Registrado: may 2008
Posts: 17
Poder: 0
Rancy Va por buen camino
Vaya, muchisimas gracias Tony. Respondes las preguntas mas rápido de lo que soy capaz de hacerlas!!!

Voy a porbar tu solución ahora mismo!

EDIT: En efecto, funciona.
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
filtrar elementos de base de datos en delphi mediante combobox carlossc90 Tablas planas 3 05-06-2008 22:21:10
Filtrar ADOTable al seleccionar combobox jeysi Varios 3 24-01-2008 09:48:36
Filtrar por un campo de un dbgrid Ivan_25 C++ Builder 11 03-11-2005 11:29:44
filtrar por fechas y por un campo mas mainau Conexión con bases de datos 9 01-04-2004 16:23:16
Filtrar datos con los Combobox o DBComboBox thecarlos Varios 3 09-01-2004 09:55:15


La franja horaria es GMT +2. Ahora son las 12:58:15.


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