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 02-11-2008
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Filtrar datos en una lista

Hola, buen dia.

He encontrado como filtrar datos de una base de datos en un dbgrid, pero lo que pretendo es hacer una busqueda, filtrando datos pero en una lista o cualquier otro componente que me permita seleccionar, para posteriormente poder seleccionar el registro que quiero y al dar enter, que presente la informacion en sus respectivos edit, para poder eliminar o modificar. Dado que en el dbgrid no puedo seleccionar..

Es decir, en un edit teclear "ca" y que me aparezcan todos los registros que comiencen con esta secuencia, al dar enter que me pase el control al componente y poder seleccionar por medio de las flechas arriba o abajo el registro deseado, al darle enter que me aparezca la informacion del registro seleccionado en edits.
Responder Con Cita
  #2  
Antiguo 02-11-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Puedes utilizar SQL y cuando pulses enter o la tecla que tengas designada o un botón...

Activas la consulta:

Código SQL [-]
Select *
From MiTabla
Where MiCampo Like '%CA%'

Esta consulta le conectas un DataSource y a éste último una rejilla.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 02-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Lizette, debes hacer lo que te indica el amigo marcoszorrilla, solo que en tu consulta deberías utilizar solo el % del final.

Código Delphi [-]
Query.Close;
Query.Sql.Text := 'Select * From MiTabla Where MiCampo Like '+QuotedStr(Edit1.Text+'%');
Query.Open;

Y ahora para cuando hagas enter sobre un registro del DBgrid utilizas el evento OnKeyPress del DBGrid.

Código Delphi [-]
procedure TForm1.dbgrid1KeyPress(Sender: TObject; var Key: Char);
begin
 if key=#13 then
  begin
   Edit1.Text := Query.fieldbyname('campo1').asstring;
   Edit2.Text := Query.fieldbyname('campo2').asstring;
   Edit3.Text := Query.fieldbyname('campo3').asstring;
  end;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 02-11-2008
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Gracias Caro y marcoszorrilla, me funcionó de maravilla..
Responder Con Cita
  #5  
Antiguo 04-11-2008
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
mmmm, el dbgrid no me actualiza los datos, cuando inserto datos y me voy al dbgrid, éste no tiene el registro que inserte..

Le pongo refresh al dbgrid y sigue igual, que puedo hacer?
Responder Con Cita
  #6  
Antiguo 04-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, despues de hacer tus cambios, con el query que esta enlazado a tu DBGrid haces lo siguiente:

Código Delphi [-]
Query.Close;
Query.Open;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 04-11-2008
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Ok, gracias Caro.
Responder Con Cita
  #8  
Antiguo 09-11-2008
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Tengo otra inquietud, no se me hizo muy adecuado, dar enter al edit y dar enter al dbgrid, estoy tratando de que al darle enter al edit, cuando ya tengo en el dbgrid el dato filtrado, me aparezcan los respectivos datos en los edits de ese registro que se encuentra filtrado en la primera posicion del dbgrid.

Le estuve intentando pero siempre me despliega el primer registro que tengo en la tabla.
Responder Con Cita
  #9  
Antiguo 10-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Lizzete, supongo que tu filtrado lo haces en el evento OnChange de tu Edit, para el enter es solo usar el evento OnKeyPress de ese mismo edit.

Código Delphi [-]
procedure TForm1.EditFiltroKeyPress(Sender: TObject; var Key: Char);
begin
 if key=#13 then
  begin
   Edit1.Text := Query.fieldbyname('campo1').asstring;
   Edit2.Text := Query.fieldbyname('campo2').asstring;
   ...........
  end;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #10  
Antiguo 10-11-2008
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Hola gracias Caro,, tengo otro pequeño problema, cuando estoy filtrando los datos y pongo en el edit "li" me despliega los nombres con esas incidencias, si tengo "rererere" y pongo toda la palabra me la acepta, pero tengo un registro "lizette", si pongo "li" lo acepta y me filtra pero si pongo "liz" no me da nada en el dbgrid, siendo que si tengo un registro con "lizette"..

Aqui anexo el codigo:

Código Delphi [-]
Var
Valor,Valor1 : String;
begin
 if EditNom.Text<>EditVacio.Text then
  begin
 Valor := EditNom.Text;
 Valor1 := Valor;
 inc(Valor1[length(Valor1)]);
 if(ADOtblPaciente.Locate('NombreC', EditNom.Text,[loPartialKey,loCaseInsensitive]))then
 begin
 ADOtblPaciente.Filter := 'NombreC >= '+QuotedStr(Valor)+ ' and NombreC < ' +QuotedStr(Valor1);
 ADOtblPaciente.Filtered := true;
 end
 else
  begin
   Application.MessageBox('El paciente/cliente buscando no se encuentra registrado','No encontrado',Mb_IconWarning);
   EditNom.Text:=EditVacio.Text;
   EditNom.SetFocus;
  end;
 end;
 if EditNom.Text=EditVacio.Text then
  begin
   ADOtblPaciente.Filtered:=False;
  end;
Responder Con Cita
  #11  
Antiguo 10-11-2008
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Se me paso comentar:

Que si voy borro letra por letra el edit una vez teniendo "liz", borro la "z" me causa error y me saca del programa.

Gracias
Responder Con Cita
  #12  
Antiguo 10-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Estas mezclando varias cosas amiguita, no esta bien que lo hagas así, habria sido mejor que utilizaras un AdoQuery e hicieras la consulta, pero si quieres hacerlo con Filter, debes utilizar también "Like", el Inc esta demas y el Locate también. Tu codigo quedaría así:

Código Delphi [-]
Var
 Valor : String;
begin
  ADOtblPaciente.Filtered:=False;
  if EditNom.Text<>EditVacio.Text then
   begin
    Valor := EditNom.Text;
    ADOtblPaciente.Filter := 'NombreC like '+QuotedStr(Valor+'%');
    ADOtblPaciente.Filtered := true;
   end
  else
   begin
    Application.MessageBox('El paciente/cliente buscando no se encuentra registrado','No encontrado',Mb_IconWarning);
    EditNom.Text:=EditVacio.Text;
    EditNom.SetFocus;
   end;

Nota.- Si te da algún error en tu codigo, debes indicarnos siempre el error exacto que te esta dando para poder ayudarte mejor.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #13  
Antiguo 11-11-2008
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Poder: 16
Lizette Va por buen camino
Gracias por tu ayuda Caro, si me funcionó..
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
Filtrar Datos DBGRID crc2005 Tablas planas 25 27-12-2017 18:13:26
Filtrar datos de una tabla DarkByte Conexión con bases de datos 14 05-08-2010 09:42:35
Filtrar datos en un kbmMemTable Viky Varios 5 22-05-2008 22:29:54
Filtrar datos con un ClientDataSet karocs Conexión con bases de datos 1 28-07-2004 20:31:29
Filtrar Datos De Una Tabla apolo18 Conexión con bases de datos 1 27-01-2004 21:24:08


La franja horaria es GMT +2. Ahora son las 21:04:28.


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