none
Compute sum datatable isnull RRS feed

  • Pergunta

  • Pessoal

       Quando utiliza datatable com compute e sum, só que o resultado é null, qual seria a melhor maneira para tratar este null, para não dar erro ?

    tbl_Doc_Desconto.Compute("Sum(vl_Documento))", "ic_Grupo = '09'")

    sexta-feira, 6 de junho de 2014 12:12

Respostas

  • Ricardo

         Acabei fazendo da forma que tinha comentado anteriormente com Diego, caso alguém encontrei outra forma mais prática agradeço o envio.

    Dim vl_Total_Desconto As Decimal = 0
    System.Decimal.TryParse(Me.tbl_Doc_Desconto.Compute("Sum(vl_Documento))", "ic_Grupo = '09'").ToString, vl_Total_Desconto)

    terça-feira, 10 de junho de 2014 12:22

Todas as Respostas

  • Neibala, bom dia.

    Essa coluns vl_Documento retorna qual tipo de dado ?

    Normalmente o Sum funciona mesmo com valor null, DBNull.Value, etc. 

    O ideal é verificar o tipo da coluna e os dados retornados pra saber o que está causando esse comportamento.

    No mais, tente mudar o filtro para:

    tbl_Doc_Desconto.Compute("Sum(vl_Documento))", "ic_Grupo = '09' and vl_Documento is not null")

    Testa e poste seus resultados.

    Abraços !


    Diego Murakami View Diego Murakami's LinkedIn profile - MCP, MS, MCSD
    * Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.

    sexta-feira, 6 de junho de 2014 14:00
  • Diego

         Para que possa tirar a dúvida, faça um teste onde o retorno não retorne nada, ai eu creio que vai dar o erro, veja se ocorre a mesma coisa com você ?

    sexta-feira, 6 de junho de 2014 21:43
  • neibala, bom dia.

    Se por acaso não há dados, o comput acontece normalmente também.

    Mas agora sim eu entendi o seu problema. Realmente você não está querendo validar os valores, mas sim o datatable em sim. Nesse caso faça somente uma validação no seu DataTable antes de entrar nessa função.

    If Not tbl_Doc_Desconto Is Nothing AndAlso tbl_Doc_Desconto.Rows.Count > 0 Then
                tbl_Doc_Desconto.Compute("Sum(vl_Documento))", "ic_Grupo = '09'")
            End If

    Teste e poste seus resultados.

    Abraços !


    Diego Murakami View Diego Murakami's LinkedIn profile - MCP, MS, MCSD
    * Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.

    segunda-feira, 9 de junho de 2014 12:24
  • Diego

       É que a forma que você informou, ainda fica um problema, pois o datatable pode existir e vai ter registro, só que na hora de dar o comando devido a condição, ai não vai atenter, então eu até o momento acabei fazendo assim, caso tenha outra maneira, você me da um alô.

      

    Dim vl_Total_Desconto As Decimal = 0
    System.Decimal.TryParse(Me.tbl_Doc_Desconto.Compute("Sum(vl_Documento))", "ic_Grupo = '09'").ToString, vl_Total_Desconto)
    

    segunda-feira, 9 de junho de 2014 16:25
  • neibala,

    Pode ser assim também ;)

    Abraços !


    Diego Murakami View Diego Murakami's LinkedIn profile - MCP, MS, MCSD
    * Por favor "Marcar como Resposta" caso esta for útil para sua dúvida.

    segunda-feira, 9 de junho de 2014 16:47
  • Diego

       Mais você entendeu que a sua forma, ainda assim daria erro, então tive que fazer um tratamento, só não sei se existira outra maneira mais adequada, mais valeu pela sua atenção.

    segunda-feira, 9 de junho de 2014 16:52
  • Bom dia Neibala,

    você conseguiu resolver? Se sim posta como ficou o código para ajudar futuros usuários com a mesma dúvida.

    Abraço

    terça-feira, 10 de junho de 2014 11:52
  • Ricardo

         Acabei fazendo da forma que tinha comentado anteriormente com Diego, caso alguém encontrei outra forma mais prática agradeço o envio.

    Dim vl_Total_Desconto As Decimal = 0
    System.Decimal.TryParse(Me.tbl_Doc_Desconto.Compute("Sum(vl_Documento))", "ic_Grupo = '09'").ToString, vl_Total_Desconto)

    terça-feira, 10 de junho de 2014 12:22