none
Problema em Campo Calculado RRS feed

  • Pergunta

  • Boa tarde a todos,
    Estou com o seguinte problema, estou desenvolvendo no SPD um relatório aonde quero apresentar ao usuário dois valores, o primeiro valor, é o total dos títulos de um cliente - aonde na lista este valor é monetário, usei somente o SUM, o outro valor é um campo calculado, aonde eu tenho um valor adquirido de uma fórmula, que é "juros+dias vencidos+valor do título", só que este valor não estou conseguindo apresentar de jeito nenhum. Aparece sempre NaN...??? Abaixo coloco o script de soma, e as linhas que apresento os valores para o XSLT.

    -A linha que apresento o valor calculado, na coluna:
    <xsl:value-of select="format-number(translate(substring-after(translate(@Valor_x0020_a_x0020_Pagar, &quot;.&quot;,&quot;&quot;), 'R$ '),&quot;,&quot;,&quot;.&quot;), &quot;R$#.##0,00;-R$#.##0,00&quot;, &quot;lcid1046&quot;)" /></td></tr>

    - O script da soma
    <xsl:template name="SomaTudo1">
      <xsl:param name="node"/>
      <xsl:param name="sum" select="0"/>
      <xsl:choose>
       <xsl:when test="$node">
        <xsl:call-template name="SomaTudo1">
         <xsl:with-param name="node" select="$node/following-sibling::Row"/>
         <xsl:with-param name="sum" select="$sum + translate(
    $node/@Valor_x0020_a_x0020_Pagar, ',.', '.')"/>
        </xsl:call-template>
       </xsl:when>
       <xsl:otherwise>
        <xsl:value-of select="format-number($sum, &quot;R$#.##0,00;-R$#.##0,00&quot;, 'lcid1046')"/>
       </xsl:otherwise>
      </xsl:choose>
     </xsl:template>

    - Aqui chamo a soma para ser apresentado o valor:
    <xsl:call-template name="SomaTudo1">
            <xsl:with-param name="node" select="/dsQueryResponse/Rows/Row"/>
    </xsl:call-template>

    O que pode estar errado, ou como posso desenvolver isso melhor...???
    Aguardando respostas,
    Emerson
    segunda-feira, 1 de março de 2010 17:23

Todas as Respostas

  • Emerson, Ja te ajudei em um caso semelhante a esse. O que acontece é a confusão de virgula e ponto na separação das casas decimais. tente usar format-number no lugar de translate. Att.
    Abraço, Ivan Costa http://ivannw.spaces.live.com twitter: @ivannw
    quarta-feira, 3 de março de 2010 18:51
  • Bom dia Ivan,
    Este problema é parecido com aquele, mas o problema esta em como o banco esta trazendo os valores. Já tentei com format-number, já fiz testes com todas as possibilidades possíveis e nada. O que acontece é que, no valor principal do título, o banco me traz assim "123,56", somente assim, então fazendo o jogo das vírgulas, e fazendo apenas o translate ele funciona. Agora preciso fazer uma soma de um campo calculado, e ele me traz o valor do campo assim "R$ 123,56",ele me traz o R$ e usando o string-after não esta funcionando. Conforme o código acima, para uso o string-after para mostrar o valor formatado, conforme eu quero, agora para fazer a soma, ele não esta funcionando...??? O que posso fazer...???
    Atenciosamente,
    Emerson
    quinta-feira, 4 de março de 2010 12:53
  • Tenta fazer o campo calculado retornar um numero, pelo que parece ele esta retornando moeda.

    caso você realmente precise de moeda por conta do R$ crie um segundo campo calculado com o valor do primeiro mas retornando numero.
    Abraço, Ivan Costa http://ivannw.spaces.live.com twitter: @ivannw
    quinta-feira, 4 de março de 2010 13:17
  • Bom dia Ivan,
    Usei uma solução que poderíamos chamar de Solução Caseira, criei um campo chamado Pagamento, que recebe os valores deste campo calculado, e fiz com que este campo Pagamento fosse número. Pronto funcionou, mas deixei a lista maior. Gostaria de solucionar o problema na coluna que estava dando problema, mas como tempo é dinheiro, e a solução funcionou, esta tudo certo. Mais uma vez Obrigado.
    Atenciosamente,
    Emerson
    quinta-feira, 4 de março de 2010 14:38
  • Emerson,

    Por favor, marque as respostas como respostas corretas. assim outras pessoas podem achar mais fácil as soluções dos problemas.
    Abraço, Ivan Costa http://ivannw.spaces.live.com twitter: @ivannw
    quinta-feira, 4 de março de 2010 18:51