[Lazarus] Problem working with Params in TSQLQuery

Michael Van Canneyt michael at freepascal.org
Mon Aug 18 11:07:09 CEST 2008



On Mon, 18 Aug 2008, Rodney Pont wrote:

> On Mon, 18 Aug 2008 02:01:14 -0300, Eduardo Lopez wrote:
> 
> >The following query works well:
> >
> >    qry02.SQL.Clear;
> >    qry02.SQL.Text:= 'select PASSWOR from USUARIOS where CODUSU = ' + 
> >chr(39) + trim(pUsuario) + chr(39);
> >    trn02.Active:=true;
> >    qry02.Open;
> >    ContrasenaDB:=qry02.FieldByName('PASSWOR').AsString;         // <-- 
> >ContrasenaDB get the value from the query
> >   
> >
> >But this one don't get the value of 'PASSWOR':
> >
> >    qry02.SQL.Clear;
> >    qry02.SQL.Text:= 'select PASSWOR from USUARIOS where CODUSU = :pCODUSU';
> >    qry02.Params.ParamByName('pCODUSU').AsString:= trim(pUsuario);
> >    trn02.Active:=true;
> >    qry02.Open;
> >    ContrasenaDB:=qry02.FieldByName('PASSWOR').AsString;        // <--- 
> >ContrasenaDB is empty
> 
> The first one has quotes around the data string you are comparing
> against, has the second one got the quotes too when it's passed to the
> database?

You should never put the quotes manually for parameters. The engine
will do so if it is required.

Michael.



More information about the Lazarus mailing list