Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-07-2004
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
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:

Código:
        
    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
Responder Con Cita
  #2  
Antiguo 02-07-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
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
Responder Con Cita
  #3  
Antiguo 02-07-2004
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
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
Responder Con Cita
  #4  
Antiguo 02-07-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por 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
Responder Con Cita
  #5  
Antiguo 02-07-2004
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
Cita:
Empezado por 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
Responder Con Cita
  #6  
Antiguo 02-07-2004
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
Hola,

Cambie las sentencias, ahora queda asi:
Código:
        
    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.

Cita:
¡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.

Cita:
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".
Responder Con Cita
  #7  
Antiguo 02-07-2004
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
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
Responder Con Cita
  #8  
Antiguo 02-07-2004
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
Ok, perfecto.

Muchas gracias
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


La franja horaria es GMT +2. Ahora son las 15:10:12.


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