Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Filtrar registros por letras iniciales que están en un edit (https://www.clubdelphi.com/foros/showthread.php?t=83715)

feliz-58 19-07-2013 04:46:42

Filtrar registros por letras iniciales que están en un edit
 
Saludos, Se que esto es un tema muy hablado y se han dado muchas soluciones, pero nose si es el delphi o es que estoy haciendo algo mal, y quiero su opinion, he usado diferentes codigos y pondre algunos ejemplos, de los cuales no he tenido resultados, ejemplo:

Este es el codigo original con los "%" al inicio y al final, que lei que si quitamos el del inicio, buscara todos los registros con las letras que empiesen iguales al contenido de mi edit (que esto es lo que me gustaria hacer).

Código SQL [-]
Query1.SQL.Text := 'select * from clientes where nombre like ''%'+Edit1.Text+'%''';

Por lo tanto lo utilice asi:
Código SQL [-]
Query1.SQL.Text := 'select * from clientes where nombre like '''+Edit1.Text+'%''';

pero el Edit no hace nada.

otro es:

Código Delphi [-]
ADOTable1.Filtered := True;
  ADOTable1.Filter := 'Nombre = '+Edit1.Text;
  if ADOTable1.RecordCount = 0 then begin
     ShowMessage('Usuario no Encontrado');
     ADOTable1.Filtered := False;
este lo habia usado pero ahora no me funciona y no tengo idea porque.

si me ha funcionado el locate pero como hay que poner el "Nombre Completo" de lo que se busca porque de lo contrario no encuentra nada:
Ejemplo, si busco Edward feliz y solo pongo Edward en el edit no lo encuentra a menos que lo ponga completo, eso me pasa con el siguiente codigo:

Código Delphi [-]
ADOTable1.Locate ('Nombre', edit1.text,[loCaseInsensitive]);
edit1.Clear;

Saben como ayudarme? lo necesito urgente.

Gracias :)

Caral 19-07-2013 05:00:42

Hola
Base de datos ACCESS
Si es numerico el dato:
Código Delphi [-]
Query1.SQL.Text := 'select * from clientes where nombre like '+Edit1.Text;
Si es alfanumerico o string:
Código Delphi [-]
Query1.SQL.Text := 'select * from clientes where nombre like '''+ Edit1.Text + '*''';
Saludos

feliz-58 19-07-2013 05:05:45

Cita:

Empezado por Caral (Mensaje 464115)
Hola
Base de datos ACCESS
Si es numerico el dato:
Código Delphi [-]
Query1.SQL.Text := 'select * from clientes where nombre like '+Edit1.Text;
Si es alfanumerico o string:
Código Delphi [-]
Query1.SQL.Text := 'select * from clientes where nombre like '''+ Edit1.Text + '*''';
Saludos

Tengo que aplicarle alguna configuracion al adoquery?

Caral 19-07-2013 05:08:15

Hola
No entiendo que configuracion ?.
simplemente usa el codigo como esta.
En access no se usa % eso es para otras bases de datos.
saludos

feliz-58 19-07-2013 05:12:38

:)
 
Cita:

Empezado por Caral (Mensaje 464117)
Hola
No entiendo que configuracion ?.
simplemente usa el codigo como esta.
En access no se usa % eso es para otras bases de datos.
saludos

Me referia a las propiedades del Adoqery por ejemplo las de SQL
a conectarlo al Adoconeccion y activarlo.

o simplemente pongo el adoquery y le aplico el codigo al boton y listo?


Saludos. :)

Caral 19-07-2013 05:14:16

Hola
No hay que hacer nada.
Me imagino que lo que estas haciendo es un filtro, eso se hace mejor con un TTable ya que tiene que revisar todo la tabla,
Todos los componentes hay que ligarlos al adoconnection si no no haran nada
Saludos

feliz-58 19-07-2013 05:17:17

Cita:

Empezado por Caral (Mensaje 464119)
Hola
No hay que hacer nada.
Me imagino que lo que estas haciendo es un filtro, eso se hace mejor con un TTable ya que tiene que revisar todo la tabla,
Todos los componentes hay que ligarlos al adoconnection si no no haran nada
Saludos

es que ya lo probé y no me busca ni la madre XD jajajaja

Caral 19-07-2013 05:19:33

Hola
Que quieres hacer exactamente ??.
Explícate con calma y el mayor detalle posible.
saludos

feliz-58 19-07-2013 05:22:32

Cita:

Empezado por Caral (Mensaje 464122)
Hola
Que quieres hacer exactamente ??.
Explícate con calma y el mayor detalle posible.
saludos

Vale hay va, tengo un ADOConection, ADOTable y un DBGrid para ver la data, tengo un edit con un boton, lo cual quiero que cuando yo introdusca en el edit el nombre o las iniciales de un nombre, el me filtre los resultados del nombre que quiero o a todos los que inicien asi, y que si no lo encuentra me diga un mensaje que el cliente no ha sido encontrado.

Saludos.

Caral 19-07-2013 05:28:31

Hola
Bien no te compliques, dices que tienes un adotable ligado al datasource que esta ligado al dbgrid, NO??.
En el evento ONChange del Edit1 pon este codigo:
Código Delphi [-]
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
      AdoTable1.Filtered := False;
      Filtro := 'nombre Like '''+ Edit1.Text + '*''';
      AdoTable1.Filter := Filtro;
      AdoTable1.Filtered := True
   end
   else AdoTable1.Filtered := False;
end;
Me imagino que el adotable es adotable1 ?, no le as cambiado el nombre.
Como ves, es un sencillo filtro y lo que hara es que segun vallas poniendo el nombre en el edit valla colocando el el dbgrid los resultados.
No hace falta poner el boton para buscar.
saludos

feliz-58 19-07-2013 05:34:15

Cita:

Empezado por Caral (Mensaje 464124)
Hola
Bien no te compliques, dices que tienes un adotable ligado al datasource que esta ligado al dbgrid, NO??.
En el evento ONChange del Edit1 pon este codigo:
Código Delphi [-]
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
      AdoTable1.Filtered := False;
      Filtro := 'nombre Like '''+ Edit1.Text + '*''';
      AdoTable1.Filter := Filtro;
      AdoTable1.Filtered := True
   end
   else AdoTable1.Filtered := False;
end;
Me imagino que el adotable es adotable1 ?, no le as cambiado el nombre.
Como ves, es un sencillo filtro y lo que hara es que segun vallas poniendo el nombre en el edit valla colocando el el dbgrid los resultados.
No hace falta poner el boton para buscar.
saludos


Excelente men :eek: MUCHAS GRACIAS!!! ^\||/^\||/ Funciono perfectamente. es la mejor forma de hacerlo.


La franja horaria es GMT +2. Ahora son las 10:24:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi