Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   error Select firebird 1.5 (https://www.clubdelphi.com/foros/showthread.php?t=20775)

ale21alito 25-04-2005 18:31:12

error Select firebird 1.5
 
Amigos.

Soy iniciante de Firebird 1.5.

Tengo un problema con una consulta desde delphi 7.

Trabajo con IB EXPERT , MERCURY COMPONENTS.

Dispongo de un DB.fdb con la siguiente configuración
ISO8859_1
Dialecto SQL 3.

y la configure para que use el gds32.dll (embebido).

Me conecta perfectamente a la base de datos . pero cuando intento hacer una consulta para autenticar un user y un password me tira el siguiente error :

EMDOFirebirdError with "dinamic SQL error . Error code = -104
Token Uknown - line 1 chr 37

Componentes :
DataSource : datasource
MDOQryUser : query
MDOTransUser : transaction
MDODatabase1 : db

El codigo es el siguiente :

Código:


procedure TPrincipal.FormShow(Sender: TObject);
var
                accion:variant;
                intenta,correcto:boolean;
begin
                { repite el pedido de login hasta que coincida o cierre el user o cancele}

                repeat
                          accion := Login.ShowModal;
                          intenta :=  accion = mrOk;

                        {busca en la base de datos cada intento del usuario del sistema}

                        MDOQryUser.SQL.Text := 'SELECT * FROM USERS WHERE USUARIO = '+Login.Item1Text+' AND PASS = '+Login.Item2Text+'';
                        MDOQryUser.Active := true;
                        if MDOQryUser.RowsAffected = 1 then
                                correcto := true;
                        else
                                correcto := false;

                        {compara los datos con los correctos}

                        if correcto then
                                begin

                                { ingresa al sistema porque encontró al usuario }

                                SiLoginMSN.Popup;
                                intenta := false;
                                labelHora.Caption := timetostr(time);
                                labelFecha.Caption := datetostr(date);
                                end
                        else if accion = mrOk then
                                  NoLogin.ShowModal;
               
                        until not intenta;

                if accion = mrCancel then
                          Application.Terminate;
end;


geovany 25-04-2005 19:41:29

Parametros
 
yo lo haria de la siguiente manera
Código:

Query.SQL.Add('SELECT * FROM USERS WHERE USUARIO =:usuario AND PASS = :pass);
 Query.Parameters.FieldByName('usuario').AsString := Login.Item1.Text;
 Query.Parameters.FieldByName('pass').AsString    :=  Login.Item2.Text;
 Query.Open;
 
 ....

No se pero creo k te problema es los tipo de datos del usuario y del pass son de tipo string (varchar) y no le estas colocando las comillas indicando que es una cadena asi que te recomiendo que utilices parametros para que te facilites esta operacion espero y eso resuleva tu problema

ale21alito 25-04-2005 20:20:03

lo pude solucionar así gracias.

salu2


La franja horaria es GMT +2. Ahora son las 10:57:42.

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