Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-09-2008
Avatar de ramphi
ramphi ramphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santo Domingo, Rep. Dominicana
Posts: 42
Poder: 0
ramphi Va por buen camino
Angry consulta con like

hola gente como estan, bien
mi problema es el siguiente estoy usando una base de datos en acces conectado con adoconnection y estoy usando un ado query para filtrar el contenido osea que solo apareca los datos que el usuario quiere.

por ejempo, del campo nombre los registros que contenga "maria"

tengo un combobox por donde expesifico el campo donde de va a buscar y un edit donde se pondra el dato a buscar y dice k hay problema en la sysntaxis en 'nombres' like '%maria%' , prove esta sentencia en una base de datos en sql server y funciono.

este es nu codigo

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
VAR consulta: string;
begin consulta:= 'SELECt * FROM tesis WHERE ' + quotedstr(combobox1.text)+' LIKE '+ quotedstr('%'+edit1.Text+'%');
datamodule2.ADOQuery1.Close;
datamodule2.ADOQuery1.SQL.Add(consulta);
datamodule2.ADOQuery1.Open;
end;
que estoy haciendo mal

salu2.
__________________
Novato en busqueda de Avance

Última edición por marcoszorrilla fecha: 21-09-2008 a las 18:37:39.
Responder Con Cita
  #2  
Antiguo 21-09-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
En Access el comodín a utilizar es el asterisco * y no el porcentaje %.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 22-09-2008
Avatar de ramphi
ramphi ramphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santo Domingo, Rep. Dominicana
Posts: 42
Poder: 0
ramphi Va por buen camino
Thumbs up

Cita:
Empezado por marcoszorrilla Ver Mensaje
En Access el comodín a utilizar es el asterisco * y no el porcentaje %.

Un Saludo.

Ok Gracias
__________________
Novato en busqueda de Avance
Responder Con Cita
  #4  
Antiguo 22-09-2008
Avatar de ramphi
ramphi ramphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santo Domingo, Rep. Dominicana
Posts: 42
Poder: 0
ramphi Va por buen camino
falta operador??

bueno ahora me da otro error

despues de corregir lo de los % me seguia dando error de syntaxis y vi que ne el mensaje de error me ponia unas comillas de mas entonces retire el quotedstr() y el mensaje siguiente es

falta operador en 'NOMBRES like *Maria*' en la expresion
SELECT * FROM TESIS WHERE NOMBRES LIKE *MARIA*

que me faltaria por mas que he intentado no le encuentro nada

Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject);
VAR consulta: string;
begin consulta:= 'SELECt * FROM tesis WHERE ' + combobox1.text+' LIKE '+ '*'+edit1.Text+'*';
datamodule2.ADOQuery1.Close;
datamodule2.ADOQuery1.SQL.Add(consulta);
datamodule2.ADOQuery1.Open;
end;
__________________
Novato en busqueda de Avance
Responder Con Cita
  #5  
Antiguo 22-09-2008
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 ramphi Ver Mensaje
y vi que ne el mensaje de error me ponia unas comillas de mas
Y, ¿cuál era ese mensaje de error?

Por otro lado, lo que comenta Marcos es válido para consultas hechas desde el mismo Acces, pero según acabo de probar, si la consulta es desde Delphi con un ADOQuery, se usan %, como en otras bases.

// Saludos
Responder Con Cita
  #6  
Antiguo 22-09-2008
Avatar de ramphi
ramphi ramphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santo Domingo, Rep. Dominicana
Posts: 42
Poder: 0
ramphi Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Y, ¿cuál era ese mensaje de error?

Por otro lado, lo que comenta Marcos es válido para consultas hechas desde el mismo Acces, pero según acabo de probar, si la consulta es desde Delphi con un ADOQuery, se usan %, como en otras bases.

// Saludos

el mensaje de error es falta operador en Nombres like *maria*


y por otra parte cuando coloco el % me da error de syntaxis,

salu2
__________________
Novato en busqueda de Avance
Responder Con Cita
  #7  
Antiguo 23-09-2008
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
En Access se utiliza como comodines los mismos caracteres que en ms-dos el asterisco (*) para un conjunto de caracteres y la interrogación (?) para un caracter, en Oracle p. ej. es porcentaje (%) para un conjunto de caracteres y guión bajo (_) para un caracter, esa es la diferencia.
__________________
Herr Heins Faust
Responder Con Cita
  #8  
Antiguo 23-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola ramphi, como te dice Roman desde Access si funciona con * pero desde delphi tienes que hacerlo con %, por lo que veo tu error estaba en el campo que le pasas como parametro ya que no tiene que ser con comillas.

Cita:
Empezado por ramphi Ver Mensaje
consulta:= 'SELECt * FROM tesis WHERE ' + quotedstr(combobox1.text)+' LIKE '+ quotedstr('%'+edit1.Text+'%');
Tu consulta debería quedar así:

Código Delphi [-]
  consulta:= 'SELECt * FROM tesis WHERE '+combobox1.text+' LIKE '+QuotedStr('%'+edit1.Text+'%');
  datamodule2.ADOQuery1.Close;
  datamodule2.ADOQuery1.SQL.Clear;//No te olvides limpiar 
  datamodule2.ADOQuery1.SQL.Add(consulta);
  datamodule2.ADOQuery1.Open;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 23-09-2008
Avatar de ramphi
ramphi ramphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santo Domingo, Rep. Dominicana
Posts: 42
Poder: 0
ramphi Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola ramphi, como te dice Roman desde Access si funciona con * pero desde delphi tienes que hacerlo con %, por lo que veo tu error estaba en el campo que le pasas como parametro ya que no tiene que ser con comillas.



Tu consulta debería quedar así:

Código Delphi [-] consulta:= 'SELECt * FROM tesis WHERE '+combobox1.text+' LIKE '+QuotedStr('%'+edit1.Text+'%'); datamodule2.ADOQuery1.Close; datamodule2.ADOQuery1.SQL.Clear;//No te olvides limpiar datamodule2.ADOQuery1.SQL.Add(consulta); datamodule2.ADOQuery1.Open;


Saluditos

pues corregi eso y me dice que hoy error en syntaxis

y cuando quito los dos quotedstr() me da error de "falta operador"

salu2
__________________
Novato en busqueda de Avance

Última edición por ramphi fecha: 23-09-2008 a las 15:20:40. Razón: error de escritura
Responder Con Cita
  #10  
Antiguo 23-09-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
y ahora llega el novato de access diciendo.... ¿no era con comillas dobles? usea:

Código SQL [-]
SELECT * FROM tesis WHERE campo LIKE "%MARIA%"


Código Delphi [-]
consulta:= 'SELECt * FROM tesis WHERE ' + quotedstr(combobox1.text)+' LIKE "%' + edit1.Text+'%"';

saluditos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 24-09-2008
Avatar de ramphi
ramphi ramphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santo Domingo, Rep. Dominicana
Posts: 42
Poder: 0
ramphi Va por buen camino
no me da error pero no pasa nada

Cita:
Empezado por Lepe Ver Mensaje
y ahora llega el novato de access diciendo.... ¿no era con comillas dobles? usea:

Código SQL [-]SELECT * FROM tesis WHERE campo LIKE "%MARIA%"



Código Delphi [-]consulta:= 'SELECt * FROM tesis WHERE ' + quotedstr(combobox1.text)+' LIKE "%' + edit1.Text+'%"';


saluditos.


bueno de esta forma no me da error pero no pasa nada, en la dbgird siguen los mismo datos y le agrego un refresh y nada, hay algo mas que agregar??


Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
VAR consulta: string;
begin consulta:= 'SELECt * FROM tesis WHERE '+quotedstr(combobox1.Text)+' LIKE "'+edit1.Text+'%"';
datamodule2.ADOQuery1.Close;
datamodule2.ADOQuery1.SQL.Clear;
datamodule2.ADOQuery1.SQL.Add(consulta);
datamodule2.ADOQuery1.Open;
dbgrid1.Refresh;
end;
__________________
Novato en busqueda de Avance
Responder Con Cita
  #12  
Antiguo 24-09-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pues la verdad, deberías ver algún resultado o ver el grid vacio. Pregunta obligada: ¿seguro que el dbgrid está asociado al mismo adoquery? (un error tonto es muy común en estos casos)

en la base de datos, "maria" estará escrita en mayúsculas ¿verdad?, y sin tilde ¿siii?

para las mayúsculas puedes usar:
Código SQL [-]
select * from tabla where Upper(campo) like "%MARIA%"

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 24-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, yo siempre lo hice comilla simple y me ha funcionado acabo de hacer la prueba con comilla doble y también funciona. A parte de lo que te dice el amigo Lepe debes quitar el QuotedStr de tu campo.

Código Delphi [-]
 consulta:= 'SELECt * FROM tesis WHERE '+quotedstr(combobox1.Text)+' LIKE "'+edit1.Text+'%"';

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #14  
Antiguo 25-09-2008
Avatar de ramphi
ramphi ramphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santo Domingo, Rep. Dominicana
Posts: 42
Poder: 0
ramphi Va por buen camino
Thumbs up Resuelto

gracias ya pude resolver el problema, habia una mala conexion con el query y las comillas del campo,

salu2
__________________
Novato en busqueda de Avance
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
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Consulta dentro de otra consulta judit25 Conexión con bases de datos 1 25-06-2007 15:52:15
consulta sobre consulta superhopi SQL 2 16-05-2003 19:01:47


La franja horaria es GMT +2. Ahora son las 11:38:01.


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