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 05-10-2007
Avatar de eddg
eddg eddg is offline
Miembro
 
Registrado: ago 2007
Ubicación: Maracay, Edo Aragua, Venezuela
Posts: 75
Poder: 17
eddg Va por buen camino
Red face Filtrando un DBGrid con ADOTable

Señores tengo mi ADOConnection1, ADOTable1, DataSource1, DBGrid1 y un Edit1.

Todo esta conectado a mi base de datos de MS Access...

La tabla tiene mas de 30 campos, pero solo muestro 2 en el DBGrid, entonces, quisiera Filtrar esos DOS Campos.

Uno es de Nombre y el otro es de Formula.

Quisiera tener un filtro tal que si tengo en la lista

maria, pedro, jimena, petra, carlos, dayana, etc...

y si colocara en el EDIT1 "ar", solo me mostrara en el DBGrid a

"maria, carlos". y los demas nombres desaparecieran del DBGrid

apliqué este código que vi en algun post de este foro:
________________________________________________

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

Sin embargo no me filtra y el DBGrid queda intacto...

Que pueda ser lo q esta mal???
Responder Con Cita
  #2  
Antiguo 05-10-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
yo en lo personal, desaconsejo el uso de Filtros, pues son sumamente costosos para la aplicación. Lo mejor sería que usaras Una consulta con los criterios deseados para mostrar unicamente los registros concordantes.

Suerte
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 05-10-2007
Avatar de eddg
eddg eddg is offline
Miembro
 
Registrado: ago 2007
Ubicación: Maracay, Edo Aragua, Venezuela
Posts: 75
Poder: 17
eddg Va por buen camino
como lo haria!

entonces. como le haria con los QUERY, soy nuevo en esto y apneas se trabajar con las tablas!


Como hacer para travajar con los QUERYS y los DBGrids????


Se agradece de antemano la valiosa colaboracion que puedan prestar...
Responder Con Cita
  #4  
Antiguo 05-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Aqui, vas a encontrar ejemplos cortos que coloque para vosotros.
Hay uno que se llama filtros y combobox, trabaja con access, en este veras varios tipos de filtro, desde combobox, edit, memo etc.
Baja el archivo, lo descomprimes, lo visualizas con delphi, le das doble click al adoconnection , buscas la tabla (biene en el zip) y lo corres, veras como te funciona.
Si tienes mas dudas, aqui estamos.
Saludos
Responder Con Cita
  #5  
Antiguo 05-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El ejemplo que te indique, (Uso de Combobox y Filtros), trabaja con adoquery, ya veras que es sencillo.
Saludos
Responder Con Cita
  #6  
Antiguo 05-10-2007
Avatar de eddg
eddg eddg is offline
Miembro
 
Registrado: ago 2007
Ubicación: Maracay, Edo Aragua, Venezuela
Posts: 75
Poder: 17
eddg Va por buen camino
a Caral

Ok, entonces, dejame revisar y vere que tal? ok, gracias por la molestia!
Responder Con Cita
  #7  
Antiguo 06-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hombre he resuelto tu problema aqui te envio de nuevo tu codigo con los arreglos:

Archivo Adjunto 1031

Nota: en la base de datos debes juntar el nombre del campo NOMBRE IUPAC quedando NOMBREIUPAC y en el codigo debe estar en Mayuscula tal como esta en la base de datos.

espero que eso resuelva tu problema cualquier duda me lo comentas.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.

Última edición por enecumene fecha: 16-01-2008 a las 20:17:39.
Responder Con Cita
  #8  
Antiguo 06-10-2007
Avatar de eddg
eddg eddg is offline
Miembro
 
Registrado: ago 2007
Ubicación: Maracay, Edo Aragua, Venezuela
Posts: 75
Poder: 17
eddg Va por buen camino
Esta Buenisimo, me gusto que pudieras dar con la solución, sin embargo,

yo lo necesito es de la siguiente manera:

imaginemos que tenemos los siguientes Registros:

"mengano, panema, cara, mari, angel, uruguay, vida"

y que en el edit1, coloce, las LETRAS: "an". me mostrara a:

-Mengano, panema, angel y no sólo "angel".

Ojala me haya explicado? lo que hiciste esta bueno pero solo para las iniciales, lo que pasa es que mi base de datos tiene mas de 2000 registros, y al momento de filtrar tengo que hacerlo de la manera q te mencioné!!!

Ojala puedas Arreglarlo! man! gracias por la molestia!
Responder Con Cita
  #9  
Antiguo 06-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pon otro asterisco al principio, Así debe quedar el sql:
Código SQL [-]
where NOMBREIUPAC = '*ar*'
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 07-10-2007
Avatar de eddg
eddg eddg is offline
Miembro
 
Registrado: ago 2007
Ubicación: Maracay, Edo Aragua, Venezuela
Posts: 75
Poder: 17
eddg Va por buen camino
este es el código que tengo:

Código Delphi [-]
procedure Tcomponentes.Edit1Change(Sender: TObject);
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
      ADOTable.Filtered := False;
      If RadioButton1.Checked = True then Filtro := 'NOMBRE_IUPAC Like ''' +Edit1.Text+ '*'''
         else If RadioButton2.Checked = True then Filtro := 'FORMULA_MOLECULAR Like '''  +Edit1.Text+   '*''';
      ADOTable.Filter := Filtro;
      ADOTable.Filtered := True;
   end
   else ADOTable.Filtered := False;
end;

No se donde dices tu que coloque ese ASTERISCO...

Por favor dime como lo solucionarias?

Atentamente EDDG, gracias de antemano!
Responder Con Cita
  #11  
Antiguo 07-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No estoy muy seguro pero interpretando lo que menciona Lepe siria algo asi:
Código Delphi [-]
 If RadioButton1.Checked = True then Filtro := 'NOMBRE_IUPAC Like ''''*' +Edit1.Text+ '*'''''
         else If RadioButton2.Checked = True then Filtro := 'FORMULA_MOLECULAR Like ''''*'  +Edit1.Text+   '*''''';
La idea del asterisco que tienes actualmente es decirle al filtro que traiga todo lo que sigue al edit:
Código Delphi [-]
Like '''  +Edit1.Text+   '*'''
La idea de Lepe seria todo lo anterior y lo posterior.
saludos
Responder Con Cita
  #12  
Antiguo 07-10-2007
Avatar de eddg
eddg eddg is offline
Miembro
 
Registrado: ago 2007
Ubicación: Maracay, Edo Aragua, Venezuela
Posts: 75
Poder: 17
eddg Va por buen camino
observen el adjunto que dejo ENECUMENE en el post #7, alli esta mas ilustrado el problemita!

él lo hizo excelente, sin embargo lo necesito mas refinado, tal como lo explique!

Les pido un favor de revisar ese codigo, ya que hice lo q caral dijo pero me arroja un error! Observenlo y comenten

SAlud y éxitos!
Responder Con Cita
  #13  
Antiguo 07-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Como indique anteriormente, el uso de * en el edit hace lo que mencionaba Lepe.
Usando la logica de programacion y como soy un Novato lo tengo que hacer.
Se puede ver que lo que pretendes es hacer un filtro que sea mas profundo o que traiga pranticamente todas las semejanzas.
Bueno aqui lo tienes, espero que esto si sea lo que necesitas.
Saludos

Última edición por Caral fecha: 12-10-2007 a las 18:07:50.
Responder Con Cita
  #14  
Antiguo 07-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Ya veo que Caral ha contestado antes. Solo un detalle, dejad de usar las comillas simples que eso marea mucho

Código Delphi [-]
var campo :string;

   ADOTable.Filtered := False;
   If RadioButton1.Checked = True then Campo := 'NombreCliente Like '
   else If RadioButton2.Checked = True then Campo:= 'Telefono Like ' 
   ADOTable.Filter := Campo + QuotedStr('*' + Edit1.text + '*');
   ADOTable.Filtered := True;

Aunque tal y como dije en un mensaje anterior, creo que "Like" y "Filter" son incompatibles, si eso da error tendrás que usar un TADOQuery.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #15  
Antiguo 07-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Impresionante, muy inteligente solucion.
Saludos
Responder Con Cita
  #16  
Antiguo 07-10-2007
Avatar de eddg
eddg eddg is offline
Miembro
 
Registrado: ago 2007
Ubicación: Maracay, Edo Aragua, Venezuela
Posts: 75
Poder: 17
eddg Va por buen camino
Excelente AYuda señores, ahora sí funciona correctamente.

Un millón de Gracias....
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
Filtrando fechas con SQL mariofur SQL 4 31-05-2007 18:46:30
Error Filtrando una Tabla Paradox (BDE) mariofur Conexión con bases de datos 5 15-04-2007 16:14:11
Filtrando tabla paradox por fecha chrids506 Conexión con bases de datos 4 03-10-2006 20:27:32
Filtrando datos de una tabla Walterdf Conexión con bases de datos 3 20-04-2005 01:20:46
Select con where filtrando a un nivel determinado de un código HombreSigma Oracle 7 13-09-2004 02:49:26


La franja horaria es GMT +2. Ahora son las 01:23:01.


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