Ir para conteúdo
  • Cadastre-se

dev botao

Valor Da Prestação Do Serviço Nao Aparece Na Xml


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 4120 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom Dia

estou com problemas na impressão dos componentes de valor da prestação do serviço, estou passando dessa forma,

porem não aparece na xml.

 

tabela.Last;
   j:=tabela.RecordCount;           
   if (j > 0) then begin
     tabela.First;
     for i:=1 to j do begin
       if (tabelaVALOR.AsFloat > 0) then begin        
         vPrest.comp.Add.xNome:=tabelaDESCRICAO.AsString;
         vPrest.comp.Add.vComp:=StrToFloat(FormatFloat('##0.00', tabelaVALOR.AsFloat));      
       end;
       Dm.TableConheCompVlr.Next;
     end;
   end;  
 
 
Alguém por favor pode me ajudar?
Postado

sim, isso eu sei.

Mais o que não aparece é a parte dos componentes do valor da prestação dos serviços.

tabela.Last;
   j:=tabela.RecordCount;           
   if (j > 0) then begin
     tabela.First;
     for i:=1 to j do begin
       if (tabelaVALOR.AsFloat > 0) then begin        
         vPrest.comp.Add.xNome:=tabelaDESCRICAO.AsString;
         vPrest.comp.Add.vComp:=StrToFloat(FormatFloat('##0.00', tabelaVALOR.AsFloat));      
       end;
       Dm.TableConheCompVlr.Next;
     end;
   end;  
  • Consultores
Postado

Boa tarde Thaine,

 

Da forma que você esta fazendo esta errado, a maneira correta é:

 

      if (tabelaVALOR.AsFloat > 0) then begin        

         with vPrest.comp.Add do
          begin
            xNome:=tabelaDESCRICAO.AsString;
            vComp:=StrToFloat(FormatFloat('##0.00', tabelaVALOR.AsFloat));      
          end;
       end;
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Obrigada pela atenção italojjr,

mais eu não estou vendo diferenças entre os 2 codigos, a não ser que essa parte do código não deva estar dentro de um while.

  • Consultores
  • Solution
Postado

Bom dia Thaine,

 

As diferenças são grandes, veja:

 

if (tabelaVALOR.AsFloat > 0) then begin        

    vPrest.comp.Add.xNome:=tabelaDESCRICAO.AsString;
    vPrest.comp.Add.vComp:=StrToFloat(FormatFloat('##0.00', tabelaVALOR.AsFloat));      
end;
 
No código acima o Add esta sendo executado duas vezes, neste caso você esta gerando dois elementos na lista, o primeiro com a descrição ( xNome ) e o segundo somente com o valor ( vComp ).
 
No código abaixo o Add esta no WITH, logo ele vai ser executado somente uma vez, portanto sera gerado apenas um elemento e este vai conter as duas informações: xNome e vComp.
 
if (tabelaVALOR.AsFloat > 0) then begin        
         with vPrest.comp.Add do
          begin
            xNome:=tabelaDESCRICAO.AsString;
            vComp:=StrToFloat(FormatFloat('##0.00', tabelaVALOR.AsFloat));      
          end;
end;
 
Se você colocar o techo de código dentro de um loop com 10 interações, neste caso o valor do frete é composto por 10 componentes, da forma que você fez teriamos dentro da lista 20 elementos e da forma que postei teria apenas 10 elementos.
 
Lembre-se que cada elemento da lista é composto pelo nome e pelo valor e não somente pelo nome ou pelo valor.
 

 
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Este tópico foi criado há 4120 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.