Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-12-2011
Avatar de javier.m866
javier.m866 javier.m866 is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: Cuba
Posts: 51
Poder: 13
javier.m866 Va por buen camino
Filtrar en DBGrid para Access

Hola, tengo una Base de Datos en Access llamada Base de datos.mdb conectada a mi aplicación mediante un Adotable (Adotable1) y un DataSource (DataSource1) con una tabla llamada Choferes, la cual se muestra mediante un DBGrid (DBGrid1) mi pregunta es la siguiente:
Quisiera realizar un Filtrado por la columna "Nombre" de manera tal que al escribir en un Edit cualquier letra ej "ier" me muestre todos los campos que contengan dichas letras ejemplo: Javier, Reinier, Iercos, etc... y que al borrar las letras del Edit, se vuelvan a mostrar todos los Campos de la Tabla. Muchas gracias de antemano y feliz año nuevo para todos.
__________________
Agradezco que ustedes me acompañen.
Responder Con Cita
  #2  
Antiguo 28-12-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Revisa este ejemplo y el código que hay en mi página a ver si es lo que buscas.
Si revisas el FTP, sección de ejemplos, es posible que también encuentres alguno más.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 28-12-2011
Avatar de javier.m866
javier.m866 javier.m866 is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: Cuba
Posts: 51
Poder: 13
javier.m866 Va por buen camino
No entendí nada

Disculpa ignorancia, pero no entendí nada, yo he buscado entre otras dudas ya planteadas y todo el mundo pregunta sobre el filtrado con ADOQuery y esas cosas, yo estoy utilizando ADOTABLE y DATASOURCE en un DBGRID conectado a una tabla de Access, pero sobre eso no he visto nada. Gracias de todos modos, seguiré intentándolo. Feliz fin de año.
__________________
Agradezco que ustedes me acompañen.
Responder Con Cita
  #4  
Antiguo 28-12-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Perdona, yo mismo me hice un lío leyendo "rápido"; Si estás utilizando ADOTable, busca en la ayuda sobre Filtered y Filter del TADOTable.
De todas formas tengo dudas de si con estas propiedades vas a poder conseguir el filtro que necesitas (que contengan....)

De todas formas, para un filtro de tipo LIKE, como el que necesitas, creo que lo más sencillo es que conviertas el ADOTable en un ADOQuery y utilices el código que te he pasado
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 28-12-2011
Avatar de javier.m866
javier.m866 javier.m866 is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: Cuba
Posts: 51
Poder: 13
javier.m866 Va por buen camino
Ya me funciona, pero tengo un problema...

El Filtrado me funciona bien con el siguiente código:

procedure TForm1.Edit1Change(Sender: TObject);
begin
If (Edit1.text <> '') then
Adotable1.Filter := 'Nombre Like '''+ Edit1.Text + '*''';
end;

Pero tengo un problema, al borrar el texto escrito en el Edit1, en lugar de regresar todos los campos, se queda tal y cómo está el filtrado, lo que necesito es que si busco "ier" salgan todos los nombres que contengan esas letras, pero al borrar "ier" del edit, que vuelvan a aparecer todos.
__________________
Agradezco que ustedes me acompañen.
Responder Con Cita
  #6  
Antiguo 28-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Javier.

Por favor cuando pongas código en tus mensajes utiliza TAG's, la imágen siguiente explica su uso:



Ahora en referencia a tu pregunta, probá de este modo:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  if Edit1.Text > '' then
  begin
    ADOTable1.Filter:= 'Nombre LIKE ' + QuotedStr(Edit1.Text+ '*');
    ADOTable1.Filtered:= True;
  end
  else
    ADOTable1.Filtered:= False;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 28-12-2011
Avatar de javier.m866
javier.m866 javier.m866 is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: Cuba
Posts: 51
Poder: 13
javier.m866 Va por buen camino
Me da el siguiente error

Probé con ese código, pero me dá el siguiente error: Proyect DatosChoferes.exe raised exception class EOleException with message "No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido". Process stopped. use Step or Run to continue.
__________________
Agradezco que ustedes me acompañen.
Responder Con Cita
  #8  
Antiguo 28-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Javier.

El código anterior lo escribí en el aire, pero acabo de probarlo y filtra sin error. Por el tipo de error que te arroja diría que revises que el campo Nombre exista o esté bién escrito.

Este es el código exácto de la prueba que hice ahora y funciona correctamente:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
 if Edit1.Text > '' then
  begin
    ADOTable1.Filtered:= False;
    ADOTable1.Filter:= 'Name LIKE ' + QuotedStr(Edit1.Text+ '*');
    ADOTable1.Filtered:= True;
  end
  else
    ADOTable1.Filtered:= False;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 28-12-2011 a las 20:00:55. Razón: corrección ortográfica
Responder Con Cita
  #9  
Antiguo 28-12-2011
Avatar de javier.m866
javier.m866 javier.m866 is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: Cuba
Posts: 51
Poder: 13
javier.m866 Va por buen camino
Si, funciona...

Es cierto que funciona, disculpa fué un error mío a la hora de escribir. Pero De esta manera el filtrado sólo se puede hacer por los nombres tal y como comienzan.
Javier
Roberto
Carlos
Reinier
si yo escribo en el edit "javier" no sale nada, porque debe de iniciar con mayúscula.
si yo escribo "ier" no filtra nada, cuando debería filtrar Javier y Reinier.
De cualquier forma te agradezco tu ayuda.
__________________
Agradezco que ustedes me acompañen.
Responder Con Cita
  #10  
Antiguo 28-12-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El problema que veo es que el filtro va buscando letra a letra, osea de principio a fin de la palabra buscada.
Si filtras Javier, buscara la J primero, la a segundo y asi sucesivamente.
Para que filtre sin selección se tendría que usar la funcion AnsiContainsStr que ademas distingue entre mayúsculas y minúsculas.

No se me ocurre como filtrar la tabla asi, tal vez practicando esta funcion encontraras una solucion.
Este es un ejemplo de uso:

Código Delphi [-]
uses  StrUtils;

procedure TForm1.Button1Click(Sender: TObject);
begin
   If AnsiContainsStr(Edit1.text, Edit2.text) then
   Showmessage('si');
end;

Aqui compara el contenido del edit1 y del 2.
Seguro que algun maestro te dira como usar esto en el filtro.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 29-12-2011
Avatar de javier.m866
javier.m866 javier.m866 is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: Cuba
Posts: 51
Poder: 13
javier.m866 Va por buen camino
¿Como puedo contactar a un maestro? ¿O espero a que ellos escriban?

Bueno, si alguien conoce como utilizar esa función, se los agradeceré. Feliz fin de año.
__________________
Agradezco que ustedes me acompañen.
Responder Con Cita
  #12  
Antiguo 31-12-2011
Avatar de Chogo
Chogo Chogo is offline
Miembro
 
Registrado: may 2005
Ubicación: Pto Cortes,Honduras,C.A.
Posts: 148
Poder: 19
Chogo Va por buen camino
yo hago esto, espero que te sirva

Código Delphi [-]

procedure TFrmDlgBusquedaPrefacturas.EditClienteChange(Sender: TObject);
begin

  if EditCliente.Text <> EmptyStr then
  begin
      ADOQuery1.Filtered:=False;
      ADOQuery1.Filter:='Cliente like '+QuotedStr('%'+ EditCliente.Text + '%');
      ADOQuery1.Filtered:=True;
  end
  Else
  begin
      ADOQuery1.Filtered:=False;
  end;

end;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 dbgrid con dbnavigator william2009 Varios 3 19-03-2008 10:59:34
Filtrar tabla para dbgrid nachito_tuc Conexión con bases de datos 5 07-09-2006 19:55:18
Filtrar un DBGrid jdangosto OOP 4 22-02-2005 20:15:08
filtrar en un dbgrid click Varios 2 06-07-2004 19:28:23
Filtrar registros de Access 2000 con SQL camelumi SQL 1 02-04-2004 19:16:37


La franja horaria es GMT +2. Ahora son las 04:30:30.


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