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 22-10-2010
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Tabla Zeos

Hola de nuevo a todos.

Alguien puede ayudarme. necesito establecer un filtro a una tabla en la propiedad Filter de Ztable. pero resulta que el campo que deseo filtrar es de tipo texto y no logro conseguir el operador like para que me filtre por ejemplo todos los nombres "Pedro". muchas gracias
Responder Con Cita
  #2  
Antiguo 22-10-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola,

Podrias pasar un poco del código que usas para establecer el filtro?

Así medio a ciegas, te puedo decir que para establecer un filtro deberás usar algo así:

Código Delphi [-]
  //FilterData es la variable o el texto que vas a filtrar
  //Los % son comodines. en este caso buscara tanto a Pedro fernandez como a San Pedro o PedroNel
  //Los UpperCase son para evitar problemas con la sensibilidad a mayusculas
  ZTable.Filter := UpperCase('campo')+' like '+QuotedStr('%'+UpperCase(FilterData)+'%');

  //Recuerda que debes tener el filtro activo
  ZTable.Filtered := True;

Ahhh y echale una miradita a la Guia de estilo
__________________
Buena caza y buen remar... http://mivaler.blogspot.com

Última edición por movorack fecha: 22-10-2010 a las 21:12:27.
Responder Con Cita
  #3  
Antiguo 22-10-2010
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Gracias por la respuesta pero especificamente imprimo en pantalla el filter de mi tabla Zeos

por ejemplo NOMBRE like '%PEDRO%'

todo parece estar bien y no me devuelve ningun registro. incluso lo probé con el codigo recomendado y sigue todo igual. la propiedad filtered está True

saludos
Responder Con Cita
  #4  
Antiguo 22-10-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Que yo sepa, no puedes usar LIKE en un filtro. Puedes usar un comodín * pero incluso eso tiene limitaciones. Por ejemplo, puedes poner

Código:
nombre='perez*'
pero no

Código:
nombre='*perez'
Al menos así pasa con Paradox, pero creo que el mecanismo de filtrado es igual para cualquier DataSet, o por lo menos la ayuda no indica que cada descendiente implemente su propio mecanismo.

// Saludos
Responder Con Cita
  #5  
Antiguo 22-10-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Roman, ahora si me pusiste a dudar.
Esto no es un filtro?
Código Delphi [-]
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;
Por que es lo que hago en un table y tiene el like, ademas funciona.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 22-10-2010
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Vale el codigo de Caral funciona perectamente

Gracias a todos
Responder Con Cita
  #7  
Antiguo 22-10-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tienes razón Caral. Se ve entonces que sí depende de la base.

// Saludos
Responder Con Cita
  #8  
Antiguo 22-10-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
por si la duda... los asteriscos NO me funcionan como comodín en PostgreSQL .

Por razón de costumbre usé el porcentaje % en el ejemplo.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com

Última edición por movorack fecha: 22-10-2010 a las 23:05:04.
Responder Con Cita
  #9  
Antiguo 22-10-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El codigo del filtro funciona bien en access
Para usarlo en firebird hay que cambiar los asteriscos (*) por porcentaje (%), lo demas es igual.
Ademas solo para campos text, los numéricos no lo necesitan.
No lo se para otras bd.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 24-10-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Además de lo dicho, cabe mencionar que el componente TIBTable emplea el valor dado a la propiedad Filter como condición Where SQL.

Es decir, puede utilizarse un TIBTable con su propiedades Filter y Filtered establecidas antes de abrirlo, y la traída de registros del servidor será tan eficiente como la de un TIBQuery, ya que el TIBTable ejecutará realmente una consulta SQL de tipo:

Código SQL [-]
Select * From Tabla Where PropiedadFilter

Algo muy distinto a lo que hacen otros componentes table, donde lo normal es traer a memoria todos los registros de una tabla y luego hacer invisibles a los que no cumplan con los criterios del filtro. Razón por la cual los componentes tabla han sido estigmatizados como "no recomendables".

Desconozco cómo es esto en un TZTable de ZeosLib, aunque no sería muy difícil averiguarlo.

Saludos en el servidor.

Al González.
P.D. No me pregunten qué hago aquí un domingo a la 1:15 AM.
Responder Con Cita
  #11  
Antiguo 24-10-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
P.D. No me pregunten qué hago aquí un domingo a la 1:15 AM.
No, no lo preguntaremos, por si acaso
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
vaciar una tabla con zeos markarla MySQL 2 26-05-2008 17:55:16
Problema con actualizacion de tabla con Zeos y Mysql whatson Conexión con bases de datos 2 20-04-2008 04:02:20
No puedo insertar datos (por parámetros) en una tabla - Zeos, Mysql belen MySQL 2 13-10-2006 00:16:51
Dbgrid para insertar en una tabla pero cogiendo datos de otra tabla taru MySQL 1 27-07-2006 15:36:12
Actualizar Tabla con Zeos en win98 pgraciap MySQL 1 03-12-2005 17:20:19


La franja horaria es GMT +2. Ahora son las 08:36:04.


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