PDA

Ver la Versión Completa : Filtrar tabla para dbgrid


nachito_tuc
06-09-2006, 18:33:09
Hola. Necesito filtrar una tabla, para mostrar en un dbgrid. Es una busqueda.
Tengo el siguiente código y me funciona correctamente:

dm2.tblEquipos.filter:='usuario= '+quotedstr(edtcliente.Text+'*');

Pero lo que yo necesito es que busque ya sea por el nombre o por el apellido (en el mismo campo). Digamos cualquier ocurrencia de la busqueda en el campo.
En SQL creo que se hacia con %texto% o algo parecido pero aqui al poner dos * no me muestra nada.


Espero entiendan mi duda.
Gracias, y saludos.

Nacho

Paoti
06-09-2006, 19:14:03
hola nachito, antes que nada, ¿qué motor de base de datos estas usando?


la solución es no usar el "=" sino el Like, y en vez den "*" es el "%".

ejemplo:


dm2.tblEquipos.filter:='usuario like '+quotedstr('%' + edtcliente.Text + '%');

nachito_tuc
06-09-2006, 19:24:42
Hola. Estoy usando BDE con una tabla en access. Lo que pasa es que esa sintaxis es del metodo filter, no del SQL. (el uso de * y =)
Probe lo que me dijiste (creo que ya lo habia probado antes), pero lo unico que obtengo es un mensaje que dice "Capability not supported".
Saludos

Nacho

Caral
06-09-2006, 21:45:43
Hola este es un codigo que utilizo para filtrar de una tabla (ATArticulos) con un edit un combobox y un grid.
Mi intencion es que veas el codigo de acceso para base de datos en access y te puedas dar una idea.

procedure TFBuscaArticulo.Edit1Change(Sender: TObject);
var Filtro : String;
begin
If (Edit1.Text <> '') then
begin
ATArticulos.Filtered := False;
If CBFiltro.Text = 'Código' then Filtro := 'CodParte Like '''+Edit1.Text + '*'''
else If CBFiltro.Text = 'Descripción' then Filtro := 'Descripcion Like '''+ Edit1.Text + '*'''
else If CBFiltro.Text = 'Categoría' then Filtro := 'Categoria Like '''+ Edit1.Text + '*''';
ATArticulos.Filter := Filtro;
ATArticulos.Filtered := True
end
else ATArticulos.Filtered := False;
end;

Aqui uso tres obciones de filtro: codigo, descripcion, categoria
Con solo poner la primera letra en el EDIT este va filtrando las posibles alternativas y las presenta en un grid.
Al cambiar de letra, cambia el grid y asi sucesivamente
analizalo, tal vez te sirva.
Saludos

nachito_tuc
07-09-2006, 04:23:21
Probe lo que me dijiste tal como lo hiciste vos pero sigo recibiendo el mensaje: "Capability not supported".
Tal vez no estamos usando la misma versión de Delphi. Yo uso la 7, o quizás el driver de Access que estoy usando no es el correcto, de todos modos gracias.
Saludos

Nacho

Caral
07-09-2006, 19:55:18
Hola
Yo uso Delphi 6, ADOConnection, y en controlador Jet 4.0 OLE DB Provider.
No se si hay otros pero este sistema funciona
Saludos