Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Question 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
Responder Con Cita
  #2  
Antiguo 19-07-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 19-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
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?
Responder Con Cita
  #4  
Antiguo 19-07-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No entiendo que configuracion ?.
simplemente usa el codigo como esta.
En access no se usa % eso es para otras bases de datos.
saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 19-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
:)

Cita:
Empezado por Caral Ver Mensaje
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.
Responder Con Cita
  #6  
Antiguo 19-07-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 19-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
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
Responder Con Cita
  #8  
Antiguo 19-07-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Que quieres hacer exactamente ??.
Explícate con calma y el mayor detalle posible.
saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 19-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
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.
Responder Con Cita
  #10  
Antiguo 19-07-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 19-07-2013
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
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 MUCHAS GRACIAS!!! Funciono perfectamente. es la mejor forma de hacerlo.
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
Solo letras y numeros en edit oesteve OOP 30 28-06-2013 21:30:43
buscar registros que estan en una tabla que no estan en otra microbiano SQL 5 02-06-2013 01:04:53
Validar numeros y letras en un Edit? danytorres Varios 12 12-11-2010 21:42:27
edit solo letras bothy Varios 3 05-03-2010 06:25:44
edit sin letras mainau Varios 7 19-07-2004 13:11:05


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


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