[firebase-br] Consulta SQL com Parâmetros

Reginaldo Martins Costa rmc1701e em ig.com.br
Qui Ago 6 23:39:44 -03 2009


Fausto.

Sua orientação fucionou! Problema resolvido.

Muito obrigado.

Reginaldo.

2009/8/6 Fausto <fausto.s.a em uol.com.br>

> 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 <msn%3Afaustoalves em com4.com.br>
> Franca-SP
> Enviado pelo Mozilla Thunderbird
> http://br.mozdev.org/thunderbird
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista