Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-05-2012
jocaro jocaro is offline
Miembro
 
Registrado: Sep 2011
Posts: 89
Poder: 7
jocaro Va por buen camino
Rejilla de registros de tabla filtrados por una condición

Hola.

Quiero presentar una rejilla con los registros de un ttable que cumplan la siguiente condición.

Que un determinado substring exista en un campo de tipo blobfield, que contiene texto enriquecido formateado por el componente TDBRichViewEdit (parecido al TDBRichEdit). Para buscar el substring en ese campo necesito utilizar un método (SearchText) del componente.

¿Esto podría hacerlo mediante un ttable que cargue un TDBGrid? Si es así, donde y como tendría que definir la condición para que se produzca el filtrado (entiendo que el filtro del ttable es sólo para código SQL).

Si este planteamiento no es correcto, cual sería la alternativa para implementar la rejilla con filtro.

De antemano, muchas gracias por vuestro tiempo.
Responder Con Cita
  #2  
Antiguo 08-05-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: Jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 5.723
Poder: 19
Ñuño Martínez Va camino a la famaÑuño Martínez Va camino a la fama
Personalmente, en estos casos en los que busco una cadena dentro de otra, uso "LIKE", así:
Código SQL [-]
SELECT *
FROM tabla
WHERE tabla.campo LIKE '%subcadena%'
Los caracteres "%" indican que la subcadena puede estar precedida y/o seguida por otra cualquiera. Si hubiera usado, por ejemplo, "subcadena%", entonces indica que busco aquellos registros que comiencen por "subcadena".

De todas formas, aquí veo el problema de que es un texto con formato.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 08-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.465
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No se ha informado sobre la base de datos que se está usando, si es firebird, y si el campo blob está declarado como texto, entonces se puede hacer una búsqueda "normal".
En lugar de usar like, tengo la costumbre de usar containing
La direferencia es con containing busca mayúsculas y minúsculas, y encualquier parte del texto.
El ejemplo de Ñuño quedaría así:
Código SQL [-]
SELECT * 
FROM tabla 
WHERE tabla.campo containing 'subcadena'
Responder Con Cita
  #4  
Antiguo 08-05-2012
jocaro jocaro is offline
Miembro
 
Registrado: Sep 2011
Posts: 89
Poder: 7
jocaro Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No se ha informado sobre la base de datos que se está usando, si es firebird, y si el campo blob está declarado como texto, entonces se puede hacer una búsqueda "normal".
En lugar de usar like, tengo la costumbre de usar containing
La direferencia es con containing busca mayúsculas y minúsculas, y encualquier parte del texto.
El ejemplo de Ñuño quedaría así:
Código SQL [-]SELECT * FROM tabla WHERE tabla.campo containing 'subcadena'
Hola y muchas gracias a ambos.

La base de datos es sqlite (no la he citado anteriormente para no complicar la explicación), el campo blob está declarado como tal.

Necesito buscar a traves de un método del componente de texto enriquecido y es aquí donde surge mi duda ¿la propiedad filter del dbgrid es sólo para código sql o puedo meter la búsqueda que necesito?, en caso contrario ¿existe alguna otra propiedad donde se pueda definir dicha búsqueda?, ¿tendría que utilizar otro componente?, etc.

En última instancia, que enfoque me aconsejáis a partir de vuestra experiencia.

Un saludo.
Responder Con Cita
  #5  
Antiguo 10-05-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: Jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 5.723
Poder: 19
Ñuño Martínez Va camino a la famaÑuño Martínez Va camino a la fama
Cita:
Empezado por jocaro Ver Mensaje
¿la propiedad filter del dbgrid es sólo para código sql o puedo meter la búsqueda que necesito?
El código SQL hay que usarlo en componentes SQL, que son los que hacen la búsqueda. La propiedad "filter" del "dbgrid" lo que hace es filtrar lo que obtiene del TDataSet (o del componente que uses para obtener los datos de la base de datos). Por mi experiencia, suele ser más rápido hacer la consulta SQL que devuelva los datos que queremos en lugar de usar "filter".
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Contar registros filtrados con TDbf userlazarus Conexión con bases de datos 5 28-10-2015 10:02:21
Contar registros con condicion oscarac SQL 2 06-06-2011 03:42:37
sumatoria de una tabla mientras se cumpla una condicion douglas Conexión con bases de datos 28 29-10-2007 22:40:57
Consulta que obtiene campos de una tabla u otra según condición Gabo SQL 10 20-08-2007 08:53:02
Filtrar una tabla a partir de una seleccion hecha en una rejilla zerelho OOP 3 19-12-2005 12:59:30


La franja horaria es GMT +2. Ahora son las 15:27:17.


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