" #ERRO " Expression ReportViewer
-
segunda-feira, 23 de julho de 2012 15:49
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
Todas as Respostas
-
segunda-feira, 23 de julho de 2012 16:16
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:28
não, nem sempre. Segue um exemplo:
Nome Loja ProjetadoDataPesquisaInformaçãoGIVNV*T.M.Alberg inc. 10.000,0028/5/201210.000,000 0,00 2.000,0029344,83Alberg inc. 400,004/6/20120,00400,00 0,0000,00Alberg inc. 11.880,005/6/20120,000,00 11.880,0000,00Alberg inc. 998,006/6/2012998,00200,00 300,009110,89Alberg inc. 100,007/6/20120,00100,00 0,0000,00Alberg inc. 100,08/6/2012100,00100,00 100,00520,00TOTAL 23.478,0011.098,00800,0014.280,0043#ErrorAssunto = dúvida
-
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
-
segunda-feira, 23 de julho de 2012 17:17
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:23Quero dizer, a síntaxe dele é C# (minha nativa) ou expression?
Assunto = dúvida
-
segunda-feira, 23 de julho de 2012 17:51
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 18:31
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
-
terça-feira, 24 de julho de 2012 18:26Você 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
-
quarta-feira, 25 de julho de 2012 18:37Boreki, 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
-
sexta-feira, 27 de julho de 2012 18:12
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 JuhaszOwner quarta-feira, 23 de janeiro de 2013 16:02

