[firebase-br] Consulta SQL com Parâmetros
Fausto
fausto.s.a em uol.com.br
Qui Ago 6 08:40:03 -03 2009
Em 05/08/2009 23:41, Reginaldo Martins Costa escreveu:
> Amigos,
>
> Estou desenvolvendo uma aplicação em DELPHI 2006 utilizando:
> TSQLConnection ==> TSQLQuery -> TDataSetProvider -> TClientDataSet ->
> TDataSource
>
> Ocorre que as consultas SQL que possuem parâmetros só retornam o resultado
> da primeira vez que eu consulto.
>
> Exemplo: tenho a seguinte SQL:
> SELECT * FROM usuario usu
> WHERE usu.usriCdUsuario = :CdUsuario
> AND usu.usriCdSenha = :CdSenha
> No Delphi, o código está da seguinte forma:
> with dmdsgipri.qryUsuarioLog do begin
> Close;
> dmdsgipri.cdsUsuarioLog.Close;
> ParamByName('CdUsuario').AsString := edtUsuario.Text;
> ParamByName('CdSenha').AsString := edtSenha.Text;
> Open;
> dmdsgipri.cdsUsuarioLog.Active := true;
> if dmdsgipri.cdsUsuarioLog.RecordCount = 1 then
> lAcesso := true
> else
> begin
> MessageDlg('Usuário não Cadastrado',mtError,[mbOk],0);
> lAcesso := false;
> end;
> end;
> Eu efetuo o login com o usuário "aaa" senha "1". Se eu efetuo o logon e
> tento novo logn com o usuário "A2" senha "2", o conteúdo no cdsUsuarioLog
> ainda é o resultado da primeira consulta (usuário "aaa" senha "1").
>
> Fiz alguns testes processando o qryUsuarioLog e exibindo os campos com
> "showmessage" e aparentemente a segunda consulta retorna o resultado
> correto. O problema é no ClientDataSet.
>
> Alguem já passou por este tipo de problema?
>
> Agradeço qualquer dica.
>
> Reginaldo.
Onde você esta abrindo o ClientDataSet?
Caso insista em deixar o with faça o somente com o Dmdsgirpi
Outra coisa a passagem de parametros esta errada, passe diretamente para
o cds.
Primeiro vá no cds com o botão direito clique em FechtParams
Depois faça assim:
dmdsgipri.cdsUsuarioLog.Params[0].asstring := edtUsuario.Text;
dmdsgipri.cdsUsuarioLog.Params[0].asstring := edtSenha.Text;
Note que no seu exemplo esta havendo uma confusão, pois você usa a
clausula with portanto ela esta passando o paramentro para o TSql,
e abrindo o TSql e não o Cds.
--
Fausto Alves
Skype:faustoalves
msn:faustoalves em com4.com.br
Franca-SP
Enviado pelo Mozilla Thunderbird
http://br.mozdev.org/thunderbird
Mais detalhes sobre a lista de discussão lista