Problema al ejecutar Query en delphi

Soy nuevo en Delphi, me da gusto que existan páginas así donde nos podamos ayudar los unos a los otros, te comento acerca de mi problema.
Mi problema es que al ejecutar un Query me manda el siguiente error:
Project Projet1.exe raised exception class EDBEngineErro with message 'Invalid filed name juan'. Process stopped. Use Step or Run to continue.
Eso de "Invalid field name juan" es porque yo pongo juan en un edit, juan es un registro que si existe en la bd.
A continuación pongo mi código:
procedure TForm1.cmdloginClick(Sender: TObject);
var consulta: string; user: string;
begin
user:= edit1.Text; //en este edit pongo por ejemplo juan que si existe en la bd
//Creo la consulta
consulta:='SELECT Usuario FROM bdusuarios.db WHERE usuario=' + user;
//Este Query es el que me manda error
//Limpio la posible consulta
query1.SQL.Clear;
//Añado la consulta al query
query1.SQL.Add(consulta);
//La ejecuto
query1.Open;
//Voy al primer registro
query1.First;
//Muestro Resultado también con un showmessage
while not query1.Eof do
begin
showmessage(query1.FieldValues['Usuario']);
query1.next;
end;
end;

De hecho en esa parte de:
consulta:='SELECT Usuario FROM bdusuarios.db WHERE usuario=' + user;

También le he puesto como aparece abajo y así sí me lo muestra bien
consulta:='SELECT Usuario FROM bdusuarios.db WHERE usuario="juan"';

Otro problema que tengo es que cuando quiero mostrar varios campos por ejemplo:
consulta:='SELECT Usuario, Password FROM bdusuarios.db WHERE usuario="juan"';
me manda este mensaje:
Project Project1.exe raised exception class EDBEngineError with message 'Invalid use of keyword.
Token: Password

Line Number: 1'. Process stopped. Use Step or Run to continue.
De hecho cuando lo pongo como aparece abajo si me los muestra bien todos
consulta:='SELECT * FROM bdusuarios.db WHERE usuario="juan"';

Uso Delphi 7 y para la base de datos uso paradox 7 que viene incluida en delphi, uso el componente TQuery, TDataSource y un TDBGrid para mostrar los resultados.
Sólo tengo una tabla que de campos tiene: usuario, password, tipo_usuario.

1 respuesta

Respuesta
1
Bien venido al mundo del Mejor Lenguaje de Programación... jajaja..
Imagino que el usuario es un string, cuando le pasas sql al query, el nombre del usuario debe ir entre comillas simples de esta manera:
consulta:='SELECT Usuario FROM bdusuarios.db WHERE usuario=''' + user+''' '; 
en este otro caso
consulta:='SELECT Usuario, Password FROM bdusuarios.db WHERE usuario="juan"';
Password es palabra reservada .. en firebird que es la que uso, pero en firebird debes colocar la palabra "pasword" entre comillas dobles. Y funciona, prueba eso ...
consulta:='SELECT Usuario, "Password" FROM bdusuarios.db WHERE usuario="juan"';
Hola amigo muchas gracias, si me salio bien como dices, lo que si no me funciono fue lo de "Password" yo creo mejor voy a cambiar el nombre de ese campo.
Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas