none
" #ERRO " Expression ReportViewer RRS feed

  • Pergunta

  •  E ai galera, estou com um grande problema! Estou fazendo um Rv, mas na sessão Expression, tenho que juntar a soma de um campo que divide os valores de outras duas colunas, todas as expressões deram certo, exceto essa:

    =iif(Fields!Itens.Value <> 0,  FormatNumber( SUM (Fields!Auditado.Value/Fields!Itens.Value), 2), FormatNumber(0,2))

    Todas as colunas me retornam o valor total (SUM) exceto essa que retorna como #ERRO.

    Alguém pode me ajudar, por favor?


    Assunto = dúvida

    segunda-feira, 23 de julho de 2012 15:49

Respostas

  • Você precisa contar as linhas cujo valor é diferente de zero? Use a expressão dessa forma:

    =Sum(iif(Fields!Valor.Value <> 0, 1, Nothing))

    Basicamente isso faz uma soma de 1 para cada instancia no grupo que eh diferente de zero.

    Att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    • Sugerido como Resposta Rodrigo Ataíde quarta-feira, 12 de setembro de 2012 20:49
    • Marcado como Resposta Richard Juhasz quarta-feira, 23 de janeiro de 2013 16:02
    sexta-feira, 27 de julho de 2012 18:12

Todas as Respostas

  • Aprendiz,

    Mas qual seria a mensagem de erro? Todos os valores que você esta passando no cálculo são maiores que Zero?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    segunda-feira, 23 de julho de 2012 16:16
  • não, nem sempre. Segue um exemplo:

    Nome Loja
    Projetado
    Data
    Pesquisa
                  Informação     
    GIV
      NV
        *T.M.
    Alberg inc.
    10.000,00
    28/5/2012
     10.000,00
    0                  0,00
    2.000,00
     29          
    344,83
    Alberg inc.
    400,00
    4/6/2012               
    0,00
                     400,00
    0,00                 
    0
    0,00
    Alberg inc.
    11.880,00
    5/6/2012
    0,00
                      0,00
    11.880,00
    0
    0,00
    Alberg inc.
    998,00
    6/6/2012
    998,00
                    200,00
    300,00
    9
    110,89
    Alberg inc.
    100,00                          
    7/6/2012
    0,00
                    100,00
    0,00
    0
    0,00
    Alberg inc.
    100,0
    8/6/2012
    100,00
                    100,00
    100,00
    5
    20,00
    TOTAL
    23.478,00
    11.098,00
                     800,00
    14.280,00
    43
    #Error


    Assunto = dúvida

    segunda-feira, 23 de julho de 2012 16:28
  • Aprendiz,

    A expressão iif eh uma função, isso quer dizer que os valores de todos os parâmetros são executados antes do iif. Quando Fields!Itens.Value for zero, você ainda vai ter um divide by zero, mesmo tendo essa expressão iif. A forma mais simples de você contornar isso eh escrever um custom code no seu report (report/properties/code) que faca isso com um if no código.

    Att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    segunda-feira, 23 de julho de 2012 16:47
  • Aprendiz,

    A expressão iif eh uma função, isso quer dizer que os valores de todos os parâmetros são executados antes do iif. Quando Fields!Itens.Value for zero, você ainda vai ter um divide by zero, mesmo tendo essa expressão iif. A forma mais simples de você contornar isso eh escrever um custom code no seu report (report/properties/code) que faca isso com um if no código.

    Att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services


    E como faço isso?

    Assunto = dúvida

    segunda-feira, 23 de julho de 2012 17:17
  • Quero dizer, a síntaxe dele é C# (minha nativa) ou expression?

    Assunto = dúvida

    segunda-feira, 23 de julho de 2012 17:23
  • Não entendo de VB, mas seria assim:

     Public Function ChangeWord(ByVal s As String) As String
        Dim strBuilder As New System.Text.StringBuilder(s)
        If s.Contains("0") Then
           strBuilder.Replace("0", "NULL")
           Return strBuilder.ToString()
           Else : Return s
        End If
     End Function

    ??


    Assunto = dúvida

    segunda-feira, 23 de julho de 2012 17:51
  • Acho que o problema não é a divisão por zero, fiz o seguinte teste:

    =Iif(Fields!Itens.Value = 0, "Yes", "No") e a resposta foi NO.

    Sou leigo no assunto, então se puderem me explicar melhor sobre o problema, fico agradecido.


    Assunto = dúvida

    segunda-feira, 23 de julho de 2012 18:31
  • Você colocou onde essa expressão do yes/no? Você pode olhar no log (no output do visual studio), deve ter alguma indicação do erro.

    Boreki[MSFT] - SQL Server Reporting Services

    terça-feira, 24 de julho de 2012 18:26
  • Boreki, eu consegui fazer aquela expressão! :D Agora estou apanhando na ultima, a mais complicada :x E estou dois dias atrasado para entregar esse maldito relatório, rs. Bem, a ultima expressão eu preciso pegar a soma total dessa mesma coluna que estavamos falando e dividir pelo número de linhas, porém, para isso preciso pular as linhas cujo valor são 0. = FormatNumber (IIf(Fields!Auditado.Value > Fields!Reducao.Value, SUM( Fields!Auditado.Value / IIF (Fields!Itens.Value <= 0, 1, Fields!Itens.Value)), IIf (Fields!Reducao.Value > Fields!Vendas.Value, sum (Fields!Reducao.Value / IIF (Fields!Itens.Value <= 0, 1, Fields!Itens.Value)),SUM (Fields!Vendas.Value/ IIF (Fields!Itens.Value <= 0, 1, Fields!Itens.Value)))))/Count (IIf (Fields!Auditado.Value > Fields!Reducao.Value, ( Fields!Auditado.Value / IIF (Fields!Itens.Value <= 0, 1, Fields!Itens.Value)), IIf (Fields!Reducao.Value > Fields!Vendas.Value, (Fields!Reducao.Value / IIF (Fields!Itens.Value <= 0, 1, Fields!Itens.Value) ), Fields!Vendas.Value / IIF (Fields!Itens.Value <= 0, 1, Fields!Itens.Value)))) Qualquer ideia é bem vinda.

    Assunto = dúvida

    quarta-feira, 25 de julho de 2012 18:37
  • Você precisa contar as linhas cujo valor é diferente de zero? Use a expressão dessa forma:

    =Sum(iif(Fields!Valor.Value <> 0, 1, Nothing))

    Basicamente isso faz uma soma de 1 para cada instancia no grupo que eh diferente de zero.

    Att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    • Sugerido como Resposta Rodrigo Ataíde quarta-feira, 12 de setembro de 2012 20:49
    • Marcado como Resposta Richard Juhasz quarta-feira, 23 de janeiro de 2013 16:02
    sexta-feira, 27 de julho de 2012 18:12