Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Conexión con bases de datos
Register FAQ Members List Calendar Guía de estilo Today's Posts

Conexión con bases de datos

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 02/07/2004
Sick boy Sick boy is offline
Miembro
 
Join Date: May 2003
Location: Cantabria
Posts: 245
Poder: 24
Sick boy Va por buen camino
Filtrar un dataset

Hola,

Estoy tratando de filtrar un dataset, y me encuentro con algunos problemas.
Para empezar, no puedo usar like '%lokesea%', ya que la base de datos (paradox) no lo soporta.

Lo siguiente que no puedo hacer es usar dos asteriscos '*lokesea*', que daria un resultado similar. Si me deja usar un solo asterisco 'lokesea*'.

Este codigo funciona cuando se utiliza un asterisco:

Code:
        
    datasource2.DataSet.Filtered := True;
    buscar:=''+edit14.Text+'*';
    datasource2.dataset.Filter := '[nombre] = ''' + buscar +'''';
Quizas me he hecho un lio con las comillas, o quizas no se puede hacer lo que quiero, pero se admiten sugerencias y/o soluciones

Gracias
Reply With Quote
  #2  
Old 02/07/2004
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
jachguate Va por buen camino
Cool

Me parece que si te sobran comillas.

Además, lo normal, es poner Filtered a True después de establecer el filtro. La verdad no se si de igual... pero me parece mas lógico hacerlo asi.

Luego, quizas es mejor que establezcas el filtro con algo como:

Código Delphi [-]
  datasource2.dataset.Filter := '[nombre] = ' + QuotedStr(eBuscar.Text + '*');
  datasource2.dataset.Filtered := True;

el otro cambio ha sido edit14 por eBuscar. Creo que es buena practica SI poner nombres a los objetos que tienen algún uso. Yo normalmente nombro aquellos a los que hago referencia en el código.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Reply With Quote
  #3  
Old 02/07/2004
Sick boy Sick boy is offline
Miembro
 
Join Date: May 2003
Location: Cantabria
Posts: 245
Poder: 24
Sick boy Va por buen camino
Gracias por lo de QuotedStr, no conocia la función.

Tambien probaré lo de activar el filtro despues, pero ese no era mi problema.

El problema es que no puedo aplicar los asteriscos por ambos lados, osea que lo que busco es hacer un like %buscar%

Lo de poner el asterisco por la derecha ya lo tenia resuelto.

Saludos
Reply With Quote
  #4  
Old 02/07/2004
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
jachguate Va por buen camino
Cool

Quote:
Originally Posted by Sick boy
El problema es que no puedo aplicar los asteriscos por ambos lados, osea que lo que busco es hacer un like %buscar%
Pues como al final si te sobraban comillas... por allí podria venir el problema. Otra cosa es que esa funcionalidad este soportada por los datasets específicos que usas. Valdria la pena que leas un poco acerca de ellos, pero sobre todo, que hagas una prueba seguro que el filtro está bien establecido. Si no funciona, es porque no está soportado.

Para asegurarte que la propiedad está bien establecida, podes chequearla en modo debug, o bien asignarla a un label o un edit que te te la muestre.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Reply With Quote
  #5  
Old 02/07/2004
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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
Quote:
Originally Posted by Sick boy
Para empezar, no puedo usar like '%lokesea%', ya que la base de datos (paradox) no lo soporta.
¡Ah! ¿Cómo de que no?

Te aseguro que sí se puede. Digo, Paradox es limitado pero no es para tanto.

// Saludos
Reply With Quote
  #6  
Old 02/07/2004
Sick boy Sick boy is offline
Miembro
 
Join Date: May 2003
Location: Cantabria
Posts: 245
Poder: 24
Sick boy Va por buen camino
Hola,

Cambie las sentencias, ahora queda asi:
Code:
        
    datasource2.DataSet.Filtered := True;
    buscar:='*'+edit14.Text+'*';
    datasource2.dataset.Filter := '[nombre] = '+quotedstr(buscar);
    datasource2.DataSet.Filtered := True;
Y tampoco funciona.
Si le quito el primer asterisco si, pero no es lo que busco.

Quote:
¡Ah! ¿Cómo de que no?

Te aseguro que sí se puede. Digo, Paradox es limitado pero no es para tanto.
Quizas me exprese mal, no es que paradox no pueda hacer un like en una sentencia sql, es que el dataset en concreto no permite un like. Segun la ayuda de delphi, el TclienteDataset permite like, pero hay una indicacion de que no esta disponible en otros datasets.

Quote:
Like Memo LIKE '%filters%'
Works like SQL-92 without the ESC clause. When applied to BLOB fields, FilterOptions determines whether case is considered.

In Day(DateField) in (1,7)
Works like SQL-92. Second argument is a list of values all with the same type.
* State = 'M*'
Wildcard for partial comparisons
Y aqui se hace referencia a el asterisco, pero solo por la derecha.

¿Entiendo entonces que no es posible poner like en un filter?
Lo he probado, y da un mensage "Operator not aplicable".
Reply With Quote
  #7  
Old 02/07/2004
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: 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
No sé qué datasets estés usando pero al menos con TTable no es posible un like en el filtro y tampoco dos asteriscos. Yo lo que haría es usar un Query con una consulta LIKE que sí te va a funcionar.

// Saludos
Reply With Quote
  #8  
Old 02/07/2004
Sick boy Sick boy is offline
Miembro
 
Join Date: May 2003
Location: Cantabria
Posts: 245
Poder: 24
Sick boy Va por buen camino
Ok, perfecto.

Muchas gracias
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 01:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi