Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-08-2010
servicomp servicomp is offline
Miembro
 
Registrado: oct 2003
Ubicación: Cartago
Posts: 153
Poder: 21
servicomp Va por buen camino
Buscar Registro Semejantes

Hola compañeros

Tengo una pequeña base de datos, con los campos, NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, NOMCOMERCIAL. Deseo que el usuario busque por uno de los campos de la tabla, asi no conozca el nombre completo, y me lo envie a un DBGrid.

Estos usando Firebird y para hacer la conexión estoy usando IBX, pero como arranco para este proceso

Agradeciendo de antemano la atención prestada


Macana
Responder Con Cita
  #2  
Antiguo 31-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues tendrás que hacerlo como "en la vida real", o sea, comparar cada campo. Me explico, el usuario escribe una cadena a buscar en un TEdit. (por ejemplo)

Ahora debes pedir al servidor de datos lo que te interesa buscar, puede ser algo parecido a esto:

Código:
select * 
from tbclientes
where  NOMBRE1 containing :cQueBusco
or NOMBRE2 containing :cQueBusco
or APELLIDO1 containing :cQueBusco
or APELLIDO2 containing :cQueBusco
or NOMCOMERCIAL containing :cQueBusco
Puedes crear el select desde delphi o pasarle el valor a buscar como un parámetro a un IBQuery (por ejemplo) que ya tenga creada la sentencia.

Última edición por Casimiro Notevi fecha: 31-08-2010 a las 01:22:38.
Responder Con Cita
  #3  
Antiguo 31-08-2010
servicomp servicomp is offline
Miembro
 
Registrado: oct 2003
Ubicación: Cartago
Posts: 153
Poder: 21
servicomp Va por buen camino
Perdon.

el usuario ya ha seleccionado por cual de los campos desea buscar, mi problema aparece es cuando deseamos buscar por uno de los campos por ejemplo la palabra 'ALBERTO', pero el usuario solo escribe 'ALBE', y deberian sali en mi dbgrid, todos los registros que el campo NOMBRE1, inicien con 'ALBE', hay algun comodin para usarlo, o alguna instrucción.


Agradeciendo de antemano la ayuda


Macana
Responder Con Cita
  #4  
Antiguo 31-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Entonces puedes usar "like"
Responder Con Cita
  #5  
Antiguo 02-09-2010
servicomp servicomp is offline
Miembro
 
Registrado: oct 2003
Ubicación: Cartago
Posts: 153
Poder: 21
servicomp Va por buen camino
Agradezco la colaboración amigos, con la siguiente espreción que deseo colocar por si alguien en un futuro lo necesita, resolvi parte del problema

Código SQL [-]
SELECT IDENTIFICADOR, NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, NOMCOMERCIAL FROM NOMBRE WHERE NOMBRE1 LIKE'+Edit1.Text+'%

El problema es que la consulta la realizo con in IBQuery, y deseo que los resultados me aparezcan en un DBGird. ¿Como direcciono los datos que me da el IBQuery al DBGrid?

Agradeciendo de antemano la atención prestada
Responder Con Cita
  #6  
Antiguo 04-09-2010
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Enlazas al Ibquery con un componente Datasource (Propiedad Dataset colocas en nombre del Ibquery) y a este con el dbgrid en su propiedad Datasource
__________________
IVAND
Responder Con Cita
  #7  
Antiguo 14-09-2010
servicomp servicomp is offline
Miembro
 
Registrado: oct 2003
Ubicación: Cartago
Posts: 153
Poder: 21
servicomp Va por buen camino
con otro problema Trivial

Bueno amigos, le cuanto que estoy usando para mi busquedad la sentencia SQL que escribi en la antigua consulta y que coloco de nuevo a continuación.

Código SQL [-]
IBuscar.SQL.Add('SELECT IDENTIFICADOR, NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, NOMCOMERCIAL FROM NOMBRE WHERE NOMBRE1 LIKE "J% " ORDER BY NOMBRE2' );

Le he colocado la "J%", como por ejemplo me busque los registros que inician por J y el comodin, pero al ejecutar la opcion IBuscar.Open, para activar la busqueda, me lanza el siguiente error

Código:
SQL Error Code = -206
Column Unknown
J%
Al parecer no me esta tomando el LIKE y me esta tomando la J% como una columna.

Agradezco sus comentarios para resolver esta trivial consulta.


Macana
Responder Con Cita
  #8  
Antiguo 14-09-2010
ARPE ARPE is offline
Miembro
 
Registrado: oct 2003
Posts: 11
Poder: 0
ARPE Va por buen camino
Hola, me temo que es cuestión de comillas y cuentan por ahí que es más eficiente "starting with" que "like xxx%".

La consulta quedaría algo así:

IBuscar.SQL.Add('SELECT IDENTIFICADOR, NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, NOMCOMERCIAL FROM NOMBRE WHERE NOMBRE1 LIKE ''' + edit1.text + '%'' ORDER BY NOMBRE2');

Todo son comillas simples, pero cuentan que es mejor esta

IBuscar.SQL.Add('SELECT IDENTIFICADOR, NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, NOMCOMERCIAL FROM NOMBRE WHERE NOMBRE1 starting with ''' + edit1.text + ''' ORDER BY NOMBRE2');

y lo malo como el usuario te escriba L'Andreu

saludos.
Responder Con Cita
  #9  
Antiguo 14-09-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Cita:
Empezado por ARPE Ver Mensaje
Hola, me temo que es cuestión de comillas y cuentan por ahí que es más eficiente "starting with" que "like xxx%".

La consulta quedaría algo así:

IBuscar.SQL.Add('SELECT IDENTIFICADOR, NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, NOMCOMERCIAL FROM NOMBRE WHERE NOMBRE1 LIKE ''' + edit1.text + '%'' ORDER BY NOMBRE2');

Todo son comillas simples, pero cuentan que es mejor esta

IBuscar.SQL.Add('SELECT IDENTIFICADOR, NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, NOMCOMERCIAL FROM NOMBRE WHERE NOMBRE1 starting with ''' + edit1.text + ''' ORDER BY NOMBRE2');

y lo malo como el usuario te escriba L'Andreu

saludos.
No sería mejor pasar el nombre por parámetros? No sé como funcionan estos componentes que usáis, pero en los IBDAC sería algo como:

Código:
IBuscar.SQL.Add('SELECT IDENTIFICADOR, NOMBRE1, NOMBRE2, APELLIDO1,  APELLIDO2, NOMCOMERCIAL FROM NOMBRE WHERE NOMBRE1 starting with '':NOMBRE'' ORDER BY NOMBRE2');
IBuscar.ParamByName('NOMBRE').AsString:=edit1.text;
Así nos ahorramos los problemas de escribir L'Andreu y cosas similares...

Ah, observar que :NOMBRE no está entre comillas, está entre apostrofes... Las comillas producen el error que comentaba antes servicomp (el -206 de "Column not found")
Responder Con Cita
  #10  
Antiguo 14-09-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Cita:
Empezado por ARPE Ver Mensaje
Todo son comillas simples, pero cuentan que es mejor esta

IBuscar.SQL.Add('SELECT IDENTIFICADOR, NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, NOMCOMERCIAL FROM NOMBRE WHERE NOMBRE1 starting with ''' + edit1.text + ''' ORDER BY NOMBRE2');

y lo malo como el usuario te escriba L'Andreu
Para evitar eso se utilizan consultas con parámetros :

IBuscar.SQL.Add('SELECT IDENTIFICADOR, NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, NOMCOMERCIAL FROM NOMBRE WHERE NOMBRE1 starting with :NOMBRE ORDER BY NOMBRE2');

IBuscar.ParamByName('NOMBRE').Value := 'J';

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
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
ayuda como buscar un registro Big_blood OOP 3 20-05-2007 01:51:52
Buscar y reemplazar en el registro aom Varios 2 21-09-2006 13:50:06
Buscar registro y mostrar en edits CONY Conexión con bases de datos 1 18-07-2006 23:14:43
buscar registro y modificar fila abogado SQL 4 08-04-2005 12:57:40
Buscar un registro en una tablaAdo Telemaco Conexión con bases de datos 3 08-10-2004 09:24:19


La franja horaria es GMT +2. Ahora son las 10:02:35.


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