Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-09-2007
Shikanda Shikanda is offline
Miembro
 
Registrado: ago 2007
Posts: 36
Poder: 0
Shikanda Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 06-09-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
No sé qué BD estás utilizando.

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

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.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 06-09-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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;

__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 06-09-2007
Shikanda Shikanda is offline
Miembro
 
Registrado: ago 2007
Posts: 36
Poder: 0
Shikanda Va por buen camino
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

Última edición por Shikanda fecha: 06-09-2007 a las 10:53:49.
Responder Con Cita
  #5  
Antiguo 06-09-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #6  
Antiguo 06-09-2007
Shikanda Shikanda is offline
Miembro
 
Registrado: ago 2007
Posts: 36
Poder: 0
Shikanda Va por buen camino
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

Misterios de Delphi en manos de un novato
Responder Con Cita
  #7  
Antiguo 06-09-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #8  
Antiguo 06-09-2007
Shikanda Shikanda is offline
Miembro
 
Registrado: ago 2007
Posts: 36
Poder: 0
Shikanda Va por buen camino
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

De nuevo, muchas gracias por todo, gluglu
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
Data Snap - Expected return value not received Crandel Internet 0 08-03-2007 11:53:31
Error: Type mismatch in expression gusanita Varios 11 28-01-2006 18:12:17
No parameters Expected(ApplyUpdate) david duarte Varios 11 31-10-2005 23:16:27
type mismatch in expression noe SQL 1 12-02-2005 02:41:26
Database Desktop, Type Mismatch Expression en campo fecha fjolivares SQL 1 19-01-2005 13:45:53


La franja horaria es GMT +2. Ahora son las 06:23:32.


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