Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Statement expected, but expression of type 'Boolean' found (https://www.clubdelphi.com/foros/showthread.php?t=47749)

Shikanda 06-09-2007 09:52:58

Statement expected, but expression of type 'Boolean' found
 
A ver si me podeis decir por qué me sale este fallo tan tonto en algo tan estúpido como esto:

Código Delphi [-]
  with DMUsuarios.QGen do begin
        close;
        sentence:=('Select * from usuarios_sistema where usuario='+DMMain.RXEntornoUsuario.AsString);
        sql.Text:=sentence;
        open;
  end;

Siendo 'sentence' una variable string definida por mí y dando este error en el Open.

Como siempre, muchas gracias :)

gluglu 06-09-2007 10:10:39

No sé qué BD estás utilizando.

Pero no será que se te está escapando este detallito ?? :o

Código Delphi [-]
with DMUsuarios.QGen do begin
  Close;
  Sentence := 'Select * from usuarios_sistema where usuario=' + DMMain.RXEntornoUsuario.AsString;
  SelectSQL.Text := Sentence;
  Open;
end;

Al menos en Interbase y Firebird.

gluglu 06-09-2007 10:46:47

Iba a ponerlo anteriormente, pero al final se me escapó.

También deberías probar con esto :

Código Delphi [-]
with DMUsuarios.QGen do begin
  Close;
  Sentence := 'Select * from usuarios_sistema where usuario=' + QuotedStr(DMMain.RXEntornoUsuario.AsString);
  SQL.Text := Sentence;
  Open;
end;

;)

Shikanda 06-09-2007 10:51:38

Perdona, sí estoy usando Firebird pero QGen no es una tabla, es un query. Por eso no tiene la propiedad SelectSQL. He usado también la propiedad SQL.Add(string) pero da el mismo resultado.


2ª parte:

Uy, no habia visto que habias vuelvo a postear. No conozco la función QuotedStr, voy a probarla y te comento qué tal.


3ª parte:

Nada, con QuotedStr me sigue saliendo lo mismo

gluglu 06-09-2007 12:01:23

En estos casos así donde no se sabe qué puede pasar, lo que yo suelo hacer es mostrar el valor del texto del SQL justo antes del Open, para que así veas lo que realmente pone en dicho texto.

Código Delphi [-]
with DMUsuarios.QGen do begin
  Close;
  Sentence := 'Select * from usuarios_sistema where usuario=' + QuotedStr(DMMain.RXEntornoUsuario.AsString);
  SelectSQL.Text := Sentence;
  ShowMessage(SelectSQL.Text);
  Open;
end;

Espero así salgas de dudas.

Shikanda 06-09-2007 12:57:12

Muchas gracias, gluglu, lo que he hecho al final ha sido cambiar de componente. He puesto la tabla y no me ha dado problema ninguno :confused:

Misterios de Delphi en manos de un novato:p

gluglu 06-09-2007 13:06:57

Si ya estabas utilizando un Query y has pasado a un Table, creo que has dado un paso atras. Ya sabes que se desaconseja totalmente el uso de Tablas.

Yo utilizo sin problemas el TIBDataSet.

Y en mi caso, tu sentencia la hubiera puesto así :

Código Delphi [-]
with DMUsuarios.QGen do begin
  SelectSQL.Clear;
  SelectSQL.Add('Select * from usuarios_sistema');
  SelectSQL.Add('where usuario = :Txt1');
  ParamByName('Txt1').Value := DMMain.RXEntornoUsuario.AsString;
  Prepare;
  Open;
end;

Ahora bien, sobre gustos de programación no hay nada escrito. :rolleyes:

Shikanda 06-09-2007 13:26:19

Ya lo he conseguido con el query! Le he dado ocho mil vueltas y al final el código de la victoria ha sido:

Código Delphi [-]
With QUSist do begin
        close;
        sql.Clear;
        sql.Add('Select * from usuarios_sistema where usuario="'+ DMAccesos.QAccesosUSUARIO.AsString +'"');
        open;
end;


Diferencias respecto del original?? Supongo que el componente del que cogía el nombre de usuario. Misterios del Delphi en manos de un novato :D

De nuevo, muchas gracias por todo, gluglu


La franja horaria es GMT +2. Ahora son las 16:43:31.

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