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)
-   -   Busqueda... (https://www.clubdelphi.com/foros/showthread.php?t=43295)

mjjj 08-05-2007 01:17:21

Busqueda...
 
hola gente... espero me puedan ayudar con lo sigueinte:

necesito hacer una busqueda de una tabla, Pienso hacerlo con un query, lo que necesito buscar es el nombre de cierto cliente. Me gustaria que en un TEdit escriba el nombre del cliente, pero que estos vayan apareciendo segun lo que vayan escribiendo.

Por ejemplo, si escribo "M", que me aparezca en el mismo TEdit todos los clientes que comienzen con la letra M.

No se si me explico bien, la idea es reducir el tiempo, osea escribir las primeras letras y que se pueda elegir entre una serie de coincidencias, segun lo escrito

He escrito algo que pudiera servir...

query2.close;
Query2.SQL.Clear;
Query2.SQL.Add ('Select razsoc');
Query2.SQL.Add ('FROM clientes.db');
Query2.SQL.Add ('WHERE razsoc like '+ quotedstr(Edit3.Text));

a mi entender me faltaria el simbolo %, al final de la linea. no se como agregarlo para que quede dentro del las comillas. Ejemplo 'M%'

lo otro que estaria faltando seria que me apareciera en el mismo TEdit la continuacion de nombre del cliente...

He visto esto en otros programas, no recuerdo alguno, pero se que es algo conocido y posible de realizar

Espero me puedan ayudar...

mil gracias

egostar 08-05-2007 01:29:42

Debes usar el evento OnChange del Edit3 y creo que puedes poner QuotedStr(Edit3.Text+'%'), es cosa de que pruebes.

Lo de escribir el valor encontrado en el mismo Edit3, creo que deberias de crear una lista con los nombres que encuentre similares y seleccionar de ella el que deseas, imagina si encuentra 1000 con similar resultado.

Ahora mismo no traje mi laptop al trabajo, de hecho yo hice algo así, por la noche podría escribir de nuevo con lo que hice.

Salud OS.

Caral 08-05-2007 01:44:28

Hola
Para variar Egostar tiene razon, dejame una Maestro.:D
Lo normal en estas busquedas es usar un grid en donde van apareciendo los resultados de la misma.
Se puede hacer con un simple filtro asi:
Este programa busca el cliente.
Código Delphi [-]
procedure TFBuscaCliente.Edit1Change(Sender: TObject);
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
      ATClientes.Filtered := False;
      If CBFiltro.Text = 'Código' then Filtro := 'CodCliente Like '+Edit1.Text
         else If CBFiltro.Text = 'Nombre' then Filtro := 'NombreCliente Like '''+ Edit1.Text + '*'''
            else If CBFiltro.Text = 'Teléfono' then Filtro := 'Telefono Like '''+ Edit1.Text + '*''';
      ATClientes.Filter := Filtro;
      ATClientes.Filtered := True
   end
   else ATClientes.Filtered := False;
end;
ATClientes: query
CBFiltro: Combombox que busca el tipo de filtro.
Si lo analizas un poco veras a que se refiere Egostar y Yo.
Saludos

Neftali [Germán.Estévez] 08-05-2007 10:58:37

También puedes echarle un vistazo al ejemplo que hay en mi página, titulado "Generar una consulta LIKE (*) utilizando SQL", que creo que es muy parecido a lo que necesitas. Está en Delphi 6 y puedes mirar el código fuente.

Un saludo.


La franja horaria es GMT +2. Ahora son las 19:41:59.

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