Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-05-2003
pgraciap pgraciap is offline
Miembro
 
Registrado: may 2003
Ubicación: Tampico, Tamaulipas [Mexico]
Posts: 39
Poder: 0
pgraciap Va por buen camino
Question Buscar texto en campo con un Query

Como puedo buscar una cadena de txt en un campo de 50 caracteres, con un Query.

Tengo un campo en una tabla de access pero necesito buscar una cadena, por asi decir:

El campo completo dice:
Jose Angel Gutierrez Meraz, del cual existen varios Gutierrez en la tabla y necesito filtrar todos los Gutierrez de la tabla?

Alguien tiene una solucion a esto.

Nota: por desgracia los nombres estan juntos, cosas que suelen pasar con datos que uno no crea.....
__________________
Have a nice day :)
Responder Con Cita
  #2  
Antiguo 17-05-2003
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cool

Puedes usar la sentencia "Like" de SQL.

Ahora, supongamos que los "Gutierrez" estan en una tabla llamada "Clientes", entonces lo buscarias asi:

Código:
SELECT nombre FROM Clientes
where nombre like('%gutierrez%') order by nombre

y listo, espero te sirva
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 17-05-2003
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Lo que te ha dicho Jhonny es correcto pero por si este fuese tu caso ten encuenta que el usuario puede meter datos en mayuscualas y minusculas simultaneamente, y esto es obligación de controlarlo por parte del programador para ello soló hay que modificar un poco el código.

SELECT nombre FROM Clientes
where upper(nombre) like('%GUTIERREZ%') order by nombre

El elegir mayusculas sobre minusculas es por que hay mucha gente que suele escribirlo todo en mayusculas, ten encuenta que el dato que le des este en mayusculas tambien. Espero que te valga.

Un saludo desde Canarias.
Responder Con Cita
  #4  
Antiguo 17-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
y, para asegurarte todabia mas, puedes utilizar el upper en ambos lados

Código:
 
SELECT nombre 
FROM Clientes
where upper(nombre) like upper('%Gutierrez%') 
order by nombre
Responder Con Cita
  #5  
Antiguo 19-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Y si querés buscar algo en un Query ya abierto, podes utilizar el método Locate:

Código:
  Query1.Locate('NOMBRE', 'GUTIERREZ', [loCaseInsensitive, loPartialKey] );
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 20-05-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Hola a todos, dos comentarios:
He tenido problemas con el uso de la función UPPER y la letra 'ñ' tuve que cambiar a hacerlo con la función LOWER.
En segundo lugar quiero ver si me aclaro de una vez:
Según leo en la ayuda la función Locate busca el primer registro que coincide con la condición dada y lo convierte en el registro corriente devolviendo true si existe y false si no encuentra coincidencia, pero no devuelve un conjunto de resultados de una busqueda. Es segunda vez que veo que hacen esta propuesta en los ultimos días y quisiera que me explicaran mejor, pués puede ocurrir que, por deconocimiento, esté subutilizando la potencialidad de la función.
Gracias por sus respuestas
Responder Con Cita
  #7  
Antiguo 20-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Posteado originalmente por Ruben_Cu
la función Locate busca el primer registro que coincide con la condición dada y lo convierte en el registro corriente devolviendo true si existe y false si no encuentra coincidencia, pero no devuelve un conjunto de resultados de una busqueda.
Para eso en lugar del Locate podés utilizar Filtros, te recomiendo leer un poco sobre las propiedades Filter, Filtered, FilterOptions... de los datasets. Igualmente si el set de resultados es muy amplio, es MUY recomendable hacer el filtro en la consulta SQL, caso contrario tenés que tener en cuenta que el dataset recorrerá todos los registros del lado del cliente hasta encontrar los registros que coincidan con tu filtro.


Cita:
Posteado originalmente por Ruben_Cu
He tenido problemas con el uso de la función UPPER y la letra 'ñ' tuve que cambiar a hacerlo con la función LOWER.
Pero si el nombre está escrito con Ñ mayúscula, vas a tener el mismo problema. ¿Que motor estas utilizando?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #8  
Antiguo 20-05-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Cita:
Posteado originalmente por delphi.com.ar
Pero si el nombre está escrito con Ñ mayúscula, vas a tener el mismo problema. ¿Que motor estas utilizando?
Hola delphi.com.ar, probé con BDE y estoy llegué a la conclusión que utilizando la propuesta de cadetill de usar dos veces la función UPPER funciona bien tanto para la ñ como para la Ñ, igual resultado obtuve usando dos veces la función LOWER o sea se logra el mismo resultado por lo que lo que dije no vale.

Cita:
Posteado originalmente por delphi.com.ar
Para eso en lugar del Locate podés utilizar Filtros, te recomiendo leer un poco sobre las propiedades Filter, Filtered, FilterOptions... de los datasets. Igualmente si el set de resultados es muy amplio, es MUY recomendable hacer el filtro en la consulta SQL, caso contrario tenés que tener en cuenta que el dataset recorrerá todos los registros del lado del cliente hasta encontrar los registros que coincidan con tu filtro.
Mi pregunta se circunscribe al uso del locate, pgraciap quiere obtener un conjunto de registros que contienen una cadena dada y tu propones la función locate como alternativa al uso del query (o al menos eso entendí) de ahí el origen de mi comentario.
De todas formas seguiré tu consejo y repasaré las propiedades del dataset.
Saludos
Responder Con Cita
  #9  
Antiguo 20-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Posteado originalmente por Ruben_Cu
Mi pregunta se circunscribe al uso del locate, pgraciap quiere obtener un conjunto de registros que contienen una cadena dada y tu propones la función locate
Es que he entendido mal a pgraciap, no he notado que quería el conjunto de resultados, sinó le hubiera sugerido utilizar filtros.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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 22:26:55.


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