Ver Mensaje Individual
  #25  
Antiguo 17-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
La propiedad Filter no admite comodines, aunque existen trucos, es bastante incómodo, resulta más eficiente una consulta (TQuery).

Respondiendo antes a tu segunda pregunta:
Existen los TDatamodules, que son contenedores de objetos no visuales, es decir, no puedes situar un Edit, pero si un TTable, TDatasource, etc. La idea consiste en Crear un TDatamodule, al guardarlo le das el nombre a la unidad (dmClientes) y a la ventana del Datamodule, en su propiedad Name indicas DTMClientes.

Sitúas la tabla clientes y su TDataSource en dicho datamodule y si lo necesitas en el Form1 y Form2, haces lo sigueinte:

Código Delphi [-]
Unit Unit1; // este es el Form1

interface
  uses windows, messages, etc.... , DmClientes;
...
Cuando en Form1, en el Inspector de Objetos eliges el DBGrid.DataSource, si apararece el DataSource de Clientes para elegirlo.

Hecho esto, puedes situar un TQuery en dicho Datamodule (qryClientes), en el OnCreate del Datamodule añades:
Código Delphi [-]

qryClientes.sql.text := 'Select * from Clientes where Nombre like :prNombre order by Nombre';
if not qryClientes.Prepared then qryClientes.Prepare; // agilizar la consulta en futuras llamadas.

Ya en tu Form de búsqueda, en el OnKeyUp de tu Edit (que busca por nombres), solo tienes que hacer:
Código Delphi [-]
procedure TFormX.Edit2KeyUp(....);
begin
  if Key = vk_return then 
  with dtmClientes.qryclientes do
  begin
     Close;
     ParambyName('prNombre').AsString := QuotedStr(Edit2.text+ '%');
     Open;
  end;
end;
Con eso consigues que estando en el Edit2, al pulsar la tecla Enter/return, se obtengan todos los registros que empiezan por ese texto.

Para que busque en cualquier parte del nombre, puedes añadir:

QuotedStr('%'+Edit2.text+ '%');

es decir, otro comodín al principio del texto.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita