Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta con like (https://www.clubdelphi.com/foros/showthread.php?t=60131)

ramphi 21-09-2008 18:21:33

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.

marcoszorrilla 21-09-2008 18:37:03

En Access el comodín a utilizar es el asterisco * y no el porcentaje %.

Un Saludo.

ramphi 22-09-2008 17:17:56

Cita:

Empezado por marcoszorrilla (Mensaje 315408)
En Access el comodín a utilizar es el asterisco * y no el porcentaje %.

Un Saludo.


Ok Gracias

ramphi 22-09-2008 23:15:53

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;

roman 22-09-2008 23:30:45

Cita:

Empezado por ramphi (Mensaje 315599)
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

ramphi 22-09-2008 23:44:35

Cita:

Empezado por roman (Mensaje 315601)
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, :confused:

salu2

Faust 23-09-2008 00:47:34

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.

Caro 23-09-2008 03:08:55

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 (Mensaje 315407)
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

ramphi 23-09-2008 15:18:45

Cita:

Empezado por Caro (Mensaje 315620)
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

Lepe 23-09-2008 15:31:01

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.

ramphi 24-09-2008 13:29:44

no me da error pero no pasa nada
 
Cita:

Empezado por Lepe (Mensaje 315686)
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;

Lepe 24-09-2008 14:20:43

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

Caro 24-09-2008 14:48:11

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

ramphi 25-09-2008 22:30:36

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

salu2


La franja horaria es GMT +2. Ahora son las 07:13:45.

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