Ver la Versión Completa : consulta con like
ramphi
21-09-2008, 18:21:33
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
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
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
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 [-] (http://www.clubdelphi.com/foros/#)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
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
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.
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.
consulta:= 'SELECt * FROM tesis WHERE ' + quotedstr(combobox1.text)+' LIKE '+ quotedstr('%'+edit1.Text+'%');
Tu consulta debería quedar así:
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
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 [-] (http://www.clubdelphi.com/foros/#) 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
y ahora llega el novato de access diciendo.... ¿no era con comillas dobles? usea:
SELECT * FROM tesis WHERE campo LIKE "%MARIA%"
consulta:= 'SELECt * FROM tesis WHERE ' + quotedstr(combobox1.text)+' LIKE "%' + edit1.Text+'%"';
saluditos.
ramphi
24-09-2008, 13:29:44
y ahora llega el novato de access diciendo.... ¿no era con comillas dobles? usea:
Código SQL [-] (http://www.clubdelphi.com/foros/#)SELECT * FROM tesis WHERE campo LIKE "%MARIA%"
Código Delphi [-] (http://www.clubdelphi.com/foros/#)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??
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;
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:
select * from tabla where Upper(campo) like "%MARIA%"
Saludos
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.
consulta:= 'SELECt * FROM tesis WHERE '+quotedstr(combobox1.Text)+' LIKE "'+edit1.Text+'%"';
Saluditos
ramphi
25-09-2008, 22:30:36
gracias ya pude resolver el problema, habia una mala conexion con el query y las comillas del campo, :p
salu2
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.