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 10-04-2004
edfz edfz is offline
Miembro
 
Registrado: feb 2004
Posts: 17
Poder: 0
edfz Va por buen camino
búsquedas en dbgrid

Hola,
Cómo puedo hacer para que al ir escribiendo en un edit, se vaya buscando la palabra en un dbgrid? Teniendo la grilla ya cargada.
Ej.
Tengo un edit y un dbgrid, si yo quiero buscar la palabra "casa", voy escribiendo "c" y en la grilla me tendría que aparacer los que empiecen con "c". Después escribo la "a", y en la grilla tendría que aparecer los que empiecen con "ca". Luego la "s" y en la grilla "cas" y así...
Espero que me entiendan la explicación
Gracias!
Responder Con Cita
  #2  
Antiguo 10-04-2004
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Pudieras Probar

Hola creo que pudieras probar en el evento on change del edit algo así

Var
Valor,Valor1 : String;
begin
valor := Edit1.text;
Valor1 := Valor;
inc(valor1[length(Valor1)]);
Tabla.Filter := 'Campo >= '+QuotedStr(Valor)+ ' and Campo < ' QuotedStr(valor1);
Tabla.Filtered := True

//Donde campo es el campo por donde vas a filtrar
//Se pone lento en dependencia de la cantidad de registros que tenga la tabla.
end;
mas o menos así
Un saludo
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo


Última edición por yusnerqui fecha: 10-04-2004 a las 17:13:38. Razón: QuotedStr
Responder Con Cita
  #3  
Antiguo 10-04-2004
edfz edfz is offline
Miembro
 
Registrado: feb 2004
Posts: 17
Poder: 0
edfz Va por buen camino
porqué lento?

tengo una duda. cada vez que se pone el filtro en "true", se consulta en la base de datos?
Responder Con Cita
  #4  
Antiguo 05-07-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 17
jirbert Va por buen camino
Cita:
Empezado por yusnerqui Ver Mensaje
Hola creo que pudieras probar en el evento on change del edit algo así

Var
Valor,Valor1 : String;
begin
valor := Edit1.text;
Valor1 := Valor;
inc(valor1[length(Valor1)]);
Tabla.Filter := 'Campo >= '+QuotedStr(Valor)+ ' and Campo < ' QuotedStr(valor1);
Tabla.Filtered := True
end;
buenas trabajo en algo parecido pero el codigo que das me ha causado error al momento de ejecutar lo cual me dice

[Error]Unit10.pas(1233): Operator not applicable to this operand type
[Error]Unit10.pas(1233): Incompatible types: 'String' and 'Boolean'


tambien estube trabajando con otro codigo que me encontre en el foro pero a la hora del cambio del edit, el dbgrid se coloca en blanco el codigo lo extraje de aqui

gracias por la ayuda que puedan brindarme...
___________________________________
Utilizo delphi6 y tabla dbaseIV
Responder Con Cita
  #5  
Antiguo 05-07-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,

Yo hago algo exactamente igual a lo que pide edfz de esta manera:

En el evento OnChange del TEdit tengo el siguiente código:

Código Delphi [-]
 if Edit.Text <> '' then //Edit de Búsqueda
       begin
                Tabla.Locate('Campo',Edit.Text,loPartialKey,loCaseInsensitive]);
                DBGrid.Visible := true;
       end
       else
                DBGrid.Visible := false;

y funciona de perlas...
Responder Con Cita
  #6  
Antiguo 05-07-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 17
jirbert Va por buen camino
hola Fenareth.. bueno con tu codigo me pide que identifique loPartialKey,loCaseInsensitive..
puede que sea nada pero es que no tengo mucha experiencia en delphi .

gracias...
Responder Con Cita
  #7  
Antiguo 05-07-2008
jandok238 jandok238 is offline
No confirmado
 
Registrado: ago 2007
Ubicación: ¿ǝɯ dlǝɥ noʎ uɐɔ 'ʍouʞ ʇ,uop ı
Posts: 415
Poder: 0
jandok238 Va por buen camino
Cita:
Empezado por Fenareth Ver Mensaje
Código Delphi [-]
 if Edit.Text <> '' then //Edit de Búsqueda
        begin
                 Tabla.Locate('Campo',Edit.Text,loPartialKey,loCaseInsensitive]);
                 DBGrid.Visible := true;
        end
        else
                 DBGrid.Visible := false;
y funciona de perlas...
yo tambien lo hago asi ...

Cita:
Empezado por jirbert Ver Mensaje
hola Fenareth.. bueno con tu codigo me pide que identifique loPartialKey,loCaseInsensitive..
puede que sea nada pero es que no tengo mucha experiencia en delphi .

gracias...
necesitas agregar en la seccion USES la unidad 'DB' ....

salu2!!!!!!!
Responder Con Cita
  #8  
Antiguo 05-07-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 17
jirbert Va por buen camino
le agregue en uses 'DB' y ahora el error es:

le agregue en uses 'DB' y ahora el error es:

[Error] Unit10.pas(1223):Incompatible types: 'TLocateOptions' and 'TLocateOptions'
Responder Con Cita
  #9  
Antiguo 06-07-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola,
¿Por casualidad no será de que estás olvidando del corchete de apertura?:
Código Delphi [-]
Locate('que','donde',[]);

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #10  
Antiguo 06-07-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 17
jirbert Va por buen camino
gracias Delphius

cierto estaba copìando mal
Código Delphi [-]
 if Edit.Text <> '' then //Edit de Búsqueda   
 begin        
 Tabla.Locate('Campo',Edit.Text,loPartialKey,loCaseInsensitive);       
 DBGrid.Visible := true;      
end        
else                 
DBGrid.Visible := false;

y deberia ser
Código Delphi [-]
 if Edit.Text <> '' then //Edit de Búsqueda        
begin                 
Tabla.Locate('Campo',Edit.Text,[loPartialKey,loCaseInsensitive]);  
DBGrid.Visible := true;        
end        
else                 
DBGrid.Visible := false;

Gracias!!!!
Responder Con Cita
  #11  
Antiguo 06-07-2008
jandok238 jandok238 is offline
No confirmado
 
Registrado: ago 2007
Ubicación: ¿ǝɯ dlǝɥ noʎ uɐɔ 'ʍouʞ ʇ,uop ı
Posts: 415
Poder: 0
jandok238 Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Hola,
¿Por casualidad no será de que estás olvidando del corchete de apertura?:
Código Delphi [-]
Locate('que','donde',[]);



Saludos,
eso.. eso.. eso...

la 'culpa' la tiene Fenareth ella fue la que puso el codigo mal ...

salu2!!!!!!!
Responder Con Cita
  #12  
Antiguo 06-07-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 17
jirbert Va por buen camino
pregunta fuera del tema!!

donde puedo conseguir los comandos para darle funcion a diferentes teclas del teclado por ejemplo enter #13 lei por ahi que salian de los codigos ascII pero lo que consegui es la manera de llamarlo en la forma hex amenos que esa sea..

gracias...
Responder Con Cita
  #13  
Antiguo 07-07-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
Cita:
Empezado por jandok238 Ver Mensaje
eso.. eso.. eso...

la 'culpa' la tiene Fenareth ella fue la que puso el codigo mal ...

salu2!!!!!!!
Es cierto , pero mis intenciones han sido buenas , así lo ayudamos a que aprenda también a depurar errores ... jejeje, es broma, fue un errorcillo de dedo
Responder Con Cita
  #14  
Antiguo 25-07-2008
Avatar de destrukthor
destrukthor destrukthor is offline
Miembro
 
Registrado: may 2006
Posts: 57
Poder: 18
destrukthor Va por buen camino
Agradecido

Holas a todos...
solo un comentario para yusss....

Exelente el codigo de filtro...
Me sirvio mucho para este novato...

Gracias nuevamente...
__________________
Solo se q nada Se, Cada dia es un aprendisaje y asi siempre sera.
Responder Con Cita
  #15  
Antiguo 23-08-2008
Avatar de irixita
irixita irixita is offline
Miembro
 
Registrado: ago 2008
Ubicación: Argentina- Tucumán =D
Posts: 13
Poder: 0
irixita Va por buen camino
Cool Probando la busqueda de yusnerqui

Cita:
Empezado por yusnerqui Ver Mensaje
Hola creo que pudieras probar en el evento on change del edit algo así

Var
Valor,Valor1 : String;
begin
valor := Edit1.text;
Valor1 := Valor;
inc(valor1[length(Valor1)]);
Tabla.Filter := 'Campo >= '+QuotedStr(Valor)+ ' and Campo < ' QuotedStr(valor1);
Tabla.Filtered := True

//Donde campo es el campo por donde vas a filtrar
//Se pone lento en dependencia de la cantidad de registros que tenga la tabla.
end;
mas o menos así
Un saludo
Hola a todos....

Probando este codigo me da un error en ejecucion, el tema es que cuando borro el ultimo caracter me aparece el siguiente:

Proyect Yuhmak.exe raised eception class EAccessViolation with message 'Access violation at address 004CC87E in module 'Yuhmak.exe'. Write of address FFFFFFFF'. Process stopped. Use Step or Run to continue.

¿Que es eso? y ¿Como se soluciona?

Desde ya muchas gracias... y espero puedan ayudarme
Responder Con Cita
  #16  
Antiguo 23-08-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 irixita !

Porqué no pruebas el otro código aquí expuesto ?
Código Delphi [-]
if Edit.Text <> '' then //Edit de Búsqueda        
begin                 
   Tabla.Locate('Campo',Edit.Text,[loPartialKey,loCaseInsensitive]);  
   DBGrid.Visible := true;        
end        
else                 
  DBGrid.Visible := false;

Saluditos
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference
Responder Con Cita
  #17  
Antiguo 23-08-2008
Avatar de irixita
irixita irixita is offline
Miembro
 
Registrado: ago 2008
Ubicación: Argentina- Tucumán =D
Posts: 13
Poder: 0
irixita Va por buen camino
Talking Hola Fenareth

Buenas Fenareth.... si lo probe... mi pregunta ahora... donde lo pongo... en el boton de busqueda o en el evento onChage del edit?

Si lo probe... pero se me hace que lo estoy poniendo en un lugar distinto.

Por eso lo probe con otro que habia ahi.... espero que me hayas comprendido... esperare respuesta...
Responder Con Cita
  #18  
Antiguo 23-08-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
En el evento OnChange del TEdit...
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference
Responder Con Cita
  #19  
Antiguo 23-08-2008
Avatar de jirbert
jirbert jirbert is offline
Miembro
 
Registrado: nov 2007
Ubicación: Valencia-Venezuela
Posts: 60
Poder: 17
jirbert Va por buen camino
hola irixita

Código Delphi [-]
if Edit.Text <> '' then //Edit de Búsqueda        
begin                 
   Tabla.Locate('Campo',Edit.Text,[loPartialKey,loCaseInsensitive]);  
   DBGrid.Visible := true;        
end        
else                 
  DBGrid.Visible := false;

en rojo colocas el edit donde vas hacer la busqueda!!
en azul la tabla donde se encuetra ubicada

y lo colocas en el on change del edit!
espero poder ayudarte!
__________________
Uso Delphi 6 y Tablas dBase IV...
Responder Con Cita
  #20  
Antiguo 23-08-2008
jandok238 jandok238 is offline
No confirmado
 
Registrado: ago 2007
Ubicación: ¿ǝɯ dlǝɥ noʎ uɐɔ 'ʍouʞ ʇ,uop ı
Posts: 415
Poder: 0
jandok238 Va por buen camino
Cita:
Empezado por Fenareth Ver Mensaje
Hola irixita !

Porqué no pruebas el otro código aquí expuesto ?
Código Delphi [-]
if Edit.Text <> '' then //Edit de Búsqueda
begin
     Tabla.Locate('Campo',Edit.Text,[loPartialKey,loCaseInsensitive]);
     DBGrid.Visible := true;
end
else
     DBGrid.Visible := false;


Saluditos
Ahora si pusiste bien el codigo... no se te pasaron los CORCHETES ...

salu2!!!!!!!
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


La franja horaria es GMT +2. Ahora son las 15:33:38.


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