Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-03-2013
Daniel10 Daniel10 is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 24
Poder: 0
Daniel10 Va por buen camino
Buscar una palabra en una BaseDAtos en un Campo tipo MEMO

HOLA, OTRA CONSULTA TENGO...

Tengo una base datos, con 4 tablas, una de ellas para ejemplo la llamare Tabla_ConMemo, esta contendra 3 campos (campos1, campos2) dos de tipo string y uno de tipo memo (campoMemo).

Este campo memo contendrá un resumen, tal ves media carilla de una hoja A4, no mas de 300 palabras.
Esta tabla contendra50 registros, en cada registro el memo este con 300 palabras, no se si seria demasiado grande, creo que no.

Pero la base datos iría creciendo, esta tabla 50 registro por año.
La idea seria tener por varios años esta tabla con el resumen o comentario de cada registro, por que justamente este campo lo utilizaría para filtrar los registros.

Ahora viene mi problema.. el de realizar la consulta al campo CampoMemo, en un edit se escribiría una palabra, luego presionar el boton se deberia realizar una busqueda en los campos CampoMemo de la tabla en cuestión (Tabla_ConMemo)

y presentarme en un dbgrid el resultado, por lo menos que me muestre el numero de registro o el numero que identifique a este registro, asi luego de boble click en ese registro me mostraría en otra ventana todo el contenido de ese registro en edit y memo.



El el campo memo contendría un texto resumen seria algo similar asi.

Esto es el contenido de 5 registros del campo memo
Registro1 """""jose MARIA se domicilia en paraje Tobogan al costado de la RUTA asfaltada, cerca del PUEBLO , ella tiene un toro y un gato"""""""""
Registro2"""""MARIA vive al costado de la calle, cerca del PUEBLO , la calle es de tierra, ella tiene un PERRO y un GATO"""""""""
Registro3"""""mauro vive con su PERRO, cerca del puente madera sobre CALLE 126, cerca del cruce de RUTA 1 y RUTA 2, tiene en su granja un PERRO y un GATO"""""""""
Registro4"""""elias vive con MARIA en la ciudad, sobre la AVENIDA lOS Corrales, tiene un AUTO, es MECANICO, juega frecuentemente futbol en la cancha de TIERRA, el tiene un PERRO"""""""""
Registro5"""""rosita vive con MAURO, tiene un AUTO, es enfermera, el tiene un conejo"""""""""

Como veran este seria la base datos exclusivamente el campoMemo. Las Palabras en mayúsculas serian las coincidencias entre los registros, las puse para que identifiquen facil las coincidencias.


Por ejemplo en un edit escribo MARIA click en boton buscar y me deberia mostrar en un DBGRID los registros que contienen estas palabras.
Si escribo MARIA me debira mostrar los registros 1, 2 y 4 o si escribo AUTO me mostraría registros 4 y 5.

Algo asi seria el código de búsqueda...

Query1.CLOSE;
Query1.SQL.CLEAR;
Query1.SQL.Add('SELECT *');
Query1.SQL.ADD('FROM Tabla_ConMemo');
Query1.SQL.ADD('WHERE CampoMemo LIKE '+QuotedStr('%'+Edit1.Text+'%');
Query1.OPEN;

Por ahora es solo como encontrar un determinado campo, luego veré como haré para mostrar el contenido.

Gracias


me olvidaba...



Delphi 5
Base datos acces 2000





Tambien se me ocurrio, que en la ventana donde se cargue el memo, luego que escriba todo el texto que se quiera almacenar, y por medio de un codigo yo vaya seleccionando las palabras que yo piense que seria las CLAVES para realizar futuras busquedas, por ejemplo podria seleccionar como palabras CLAVE o LLAVE en este ejemplo palabras que sean NOMBRES, CALLES, VEHICULOS, ANIMALES,…… y muchas palabras mas.

Seria un trabajo medio largo, pero tal ves mas facil realizar este codigo para la búsqueda.
Pienso asi.. luego de cargar todo el resumen en el memo selecciono una palabra clic en boton AGREGAR y este me agregaría a una variable tipo string, luego selecciono otra palabra y clic en boton AGREGAR, y asi sucesivamente, iría agregando a una variable las palabras que considere una PALABRA CLAVE, PALABRA LLAVE o PALABRA IDENTIFICATORIA, y después seria simple para mi hacer una búsqueda en la base datos en el campo tipo string de una palabra.


Que recomentacion me podrian dar....
Responder Con Cita
  #2  
Antiguo 04-03-2013
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
Yo te haría tres preguntas:

1. ¿Por qué este hilo está en el foro Delphi/Web?
2. ¿Qué base de datos usas?
3. ¿Cuál es el problema? Al parecer ¡ya lo tienes resuelto!

// Saludos
Responder Con Cita
  #3  
Antiguo 04-03-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Daniel10 Ver Mensaje
HOLA, OTRA CONSULTA TENGO...
Que recomentacion me podrian dar....
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #4  
Antiguo 05-03-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Daniel10 Ver Mensaje
HOLA, OTRA CONSULTA TENGO...
Joer, hablas como una maestro JEDI...

Ya he movido el tema al foro correspondiente. Para la próxima vez revisalo antes de dar de alta la pregunta nueva.
A mi, al leer la pregunta me ha pasado igual que a Román, me ha dado la sensación de que ya la tenías resuelta.

¿Funciona la consulta que has puesto en Access? Es decir, ¿Puedes buscar palabras dentro de un campo memo utilizando SQL?
Si te funciona en Access (que tengo mis dudas), ya tienes el problema resulto para buscar palabras. Si así no funciona deberás hacer un recorrido por toda la tabla y realizar la búsqueda en el campo memo desde código, pero está claro que no va a ser tan eficiente.

La segunda solución que comentas sería la más "elegante" y "eficiente" y la que utilizan otros sistemas cuando hay que buscar en grandes cantidades de información. Se trata de hacer una selección de palabras claves o TAGs que pueden ser interesantes para búsquedas futuras. De esta forma, en este segundo campo (de tipo string) puedes realizar una búsqueda muy rápida sin tener que recorrer los campos MEMO. Esta implica que además del campo MEMO debes tener un campo de tipo STRING con las claves.

Si vamos un poco más allá en el diseño, en lugar de un segundo campo clave, lo que podrías tener es otra tabla dónde almacenas registros con palabras y el memo donde se encuentran. Sería la tablas de INDICE y la que utilizarías para hacer las búsquedas.

* Si en la primera frase quieres guardar las palabras: GATO,CASA, PERRO, COCHE, crearías 4 registros:
GATO, 1
CASA, 1
PERRO,1
COCHE,1

* Si en la segunda frase quieres guaradar las palabras: PERRO, CAMIÓN, OREJA y VINO crearías 4 registros más...
PERRO,2
CAMIÓN,2
OREJA,2
VINO,2

Y así sucesivamente...

Ahora con esta tabla INDICE son mucho más eficientes y sencillas.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 05-03-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola, yo lo que he entendido es que quieres saber que registros de la tabla principal son los que han tenido coincidencia en su campo memo que está separado en otra tabla, si es así podrías hacer la misma consulta pero uniendo las dos tablas.
Código Delphi [-]
Query1.CLOSE;
  Query1.SQL.CLEAR;
  Query1.SQL.Add('SELECT *');
  Query1.SQL.ADD('FROM Tabla_ConMemo,Tabla_SinMemo');
  Query1.SQL.ADD('WHERE Tabla_ConMemo.ClavePrincipal=Tabla_SinMemo.ClavePrincipal AND CampoMemo  LIKE '+QuotedStr('%'+Edit1.Text+'%');
  Query1.OPEN

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #6  
Antiguo 09-03-2013
Daniel10 Daniel10 is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 24
Poder: 0
Daniel10 Va por buen camino
gracias

volvi de nuevo

bien.. gracias por responder.....

la verdad que si la tenia, pero.. tenia un par de errores en el codigo que no me andaban... y cuando escribi el mensage al foro lo escribi de memoria y lo hice bien, pero en mi compu en el codigo lo tenia mal.

Y.. perdon por la forma de escribir, de no usar los tags de codigo.. se me paso.. es que escribi apurado, por que me conecto de ciber, y el tiempo en un ciber es dinero.. jaja...
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
buscar mas de una palabra en memo y eliminar jonydread OOP 6 07-09-2012 02:32:51
buscar numeros en campo de tipo char!!!!!!!!! david_uh Varios 10 26-11-2008 22:51:53
SP con campo calculado tipo memo aquosoft SQL 0 29-05-2007 18:33:58
error al buscar campo tipo fecha fernando1973 SQL 2 18-05-2007 14:22:37
existe campo de tipo memo ? ascrnet Varios 15 29-03-2007 11:17:32


La franja horaria es GMT +2. Ahora son las 05:29:58.


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