ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Variavel não esta recebendo valor do campo?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Out 12, 2010 6:16 pm    Assunto: Variavel não esta recebendo valor do campo? Responder com Citação

Pessoal estou tentando fazer com que a variavel receba o valor do campo, mais não esta dando certo... Vejam o codigo

Código:
procedure Tfrmcadordserv.TabPrecoCfeTipoClie;
var
  qryTemp: TZQuery;
  sTipoServ: String;
  cPercServ, cVlrMotoboy: Real;
begin
  qryTemp := TZQuery.Create(nil);
  try
     with qryTemp do
     begin
       if condutor.KeyValue <> null then
       begin
         Connection := dm.connection;
         Close;
         SQL.Clear;
         SQL.Add(' select TIPOSERV, PERCSERV, VLRMOTOBOY  ');
         SQL.Add(' from motoboy where idmotoboy = :iBusca ');
         ParamByName('iBusca').AsInteger := condutor.KeyValue;
         open;
         if not IsEmpty then //Se não estiver vazio
         begin
           sTipoServ := qryTemp.FieldByName('TIPOSERV').AsString;
           if Trim(sTipoServ) <> EmptyStr then
           begin
             cPercServ   := qryTemp.FieldByName('PERCSERV').AsCurrency;
             cVlrMotoboy := qryTemp.FieldByName('VLRMOTOBOY').AsCurrency;
           end;
         end;
       end; 
     end;   
  finally
     _ChamaFrm.Free;
     qryTemp.Free;
  end;
end;


O problema esta aqui
Código:
cPercServ   := qryTemp.FieldByName('PERCSERV').AsCurrency;
             cVlrMotoboy := qryTemp.FieldByName('VLRMOTOBOY').AsCurrency;


Ja debuguei e o valor aparece no campo
qryTemp.FieldByName('PERCSERV').AsCurrency;
Existe valor
Mais não passa para a variavel cPercServ que continua com valor zero.


Achei que poderia estar dando problema no with ai resolvi colocar o nome do componente dataset com o fieldbyname...

Mais mesmo assim não resolveu.

Obs: Se tiver end, begin ou nomes não relacionados no bloco acima é pq retirei blocos que não se faz necessario neste problema.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Out 12, 2010 6:42 pm    Assunto: Responder com Citação

Pessoal, existe alguma lógica para isso?

Po exemplo, se eu colocar este codigo aqui no bloco
Código:

with qryTemp do
     begin
       if condutor.KeyValue <> null then
       begin
         Connection := dm.connection;
         Close;
         SQL.Clear;
         SQL.Add(' select TIPOSERV, PERCSERV, VLRMOTOBOY  ');
         SQL.Add(' from motoboy where idmotoboy = :iBusca ');
         ParamByName('iBusca').AsInteger := condutor.KeyValue;
         open;
         if not IsEmpty then //Se não estiver vazio
         begin
           sTipoServ := qryTemp.FieldByName('TIPOSERV').AsString;
           if Trim(sTipoServ) <EmptyStr> 0 then
              ShowMessage('Tem valor '+ CurrToStr(cPercServ) + CurrToStr(qryTemp.FieldByName('PERCSERV').AsCurrency) )
           else
              ShowMessage('O valor é '+ CurrToStr(cPercServ) + CurrToStr(qryTemp.FieldByName('PERCSERV').AsCurrency) );
         end;
       end;
     end;


E colocar o break point aqui
sTipoServ := qryTemp.FieldByName('TIPOSERV').AsString;
E começar a debugar, quando sai da linha
cPercServ := qryTemp.FieldByName('PERCSERV').AsCurrency;
Vejo que passa o valor para a variavel

Agora se retiro estas linhas do bloco
Código:
if cPercServ > 0 then
              ShowMessage('Tem valor '+ CurrToStr(cPercServ) + CurrToStr(qryTemp.FieldByName('PERCSERV').AsCurrency) )
           else
              ShowMessage('O valor é '+ CurrToStr(cPercServ) + CurrToStr(qryTemp.FieldByName('PERCSERV').AsCurrency) );


E faço o mesmo processo de debugar, ai ja não passa o falor do campo para a variavel.

Então a pergumta é: A variavel só recebe o valor se a mesma variavel atribuir depois para outro local? Ou seja se eu não atribuir nada a esta variavel então ela não recebe o valor do campo? Esta correto isso?
Pois ainda não passei para lugar algum o valor da variavel... Pq estou criando agora este bloco.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
NalDinHuU
Colaborador
Colaborador


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 1294
Localização: João Pessoa/PB

MensagemEnviada: Qua Out 13, 2010 1:58 pm    Assunto: Responder com Citação

Ja tentou usar o Fields ?
Código:

cPercServ := qryTemp.Fields[NumeroDoCampoNaTabela].AsCurrency;

_________________
Try
Topic.Resolve;
Finally
Topic.Caption := Topic.Caption + '[RESOLVIDO]';
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
DonOctavioDelFlores
Colaborador
Colaborador


Registrado: Quarta-Feira, 12 de Setembro de 2007
Mensagens: 2630
Localização: Pra lá de Bagda

MensagemEnviada: Qua Out 13, 2010 5:07 pm    Assunto: Responder com Citação

adriano_servitec escreveu:

Então a pergumta é: A variavel só recebe o valor se a mesma variavel atribuir depois para outro local? Ou seja se eu não atribuir nada a esta variavel então ela não recebe o valor do campo? Esta correto isso?
Pois ainda não passei para lugar algum o valor da variavel... Pq estou criando agora este bloco.


é isso mesmo. O compilador nao vai deixar uma variavel inutil na memoria. Caso ela seja util, ai sim, passa a funcionar.
_________________
“The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Out 13, 2010 5:41 pm    Assunto: Responder com Citação

DonOctavioDelFlores escreveu:
adriano_servitec escreveu:

Então a pergumta é: A variavel só recebe o valor se a mesma variavel atribuir depois para outro local? Ou seja se eu não atribuir nada a esta variavel então ela não recebe o valor do campo? Esta correto isso?
Pois ainda não passei para lugar algum o valor da variavel... Pq estou criando agora este bloco.


é isso mesmo. O compilador nao vai deixar uma variavel inutil na memoria. Caso ela seja util, ai sim, passa a funcionar.
Imaginei que seria isso mesmo amigo.

Valeu pessoal. Obrigado pela ajuda.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Qua Out 13, 2010 7:35 pm    Assunto: Responder com Citação

tava nas warnings

Citação:
assigned and not used.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB