none
Como salvar o resultado de um SELECT SUM()... ? RRS feed

  • Discussão Geral

  • Olá, sou novo por aqui e estou iniciando em programação

    Minha dúvida é a seguinte:

    Como eu armazeno em uma variável o valor de um select Sum()?

    pois eu tenho que somar o valor de todos os  'pedidos' que estão em uma tabela do banco de dados e armazenar em uma variável chamada valorTotal 

    Desde já eu agradeço

    segunda-feira, 4 de fevereiro de 2019 19:29

Todas as Respostas

  • Olá Guilherme..

    Boa tarde.

    Você quer saber como fazer na query usando o comando SUM , ou, você quer saber como armazenar na variável valorTotal pelo VB ?

    Eu não entendi bem.

    Se for pelo SELECT, pode ser assim:

    SELECT

         SUM(PEDIDOS) AS valorTotal

    FROM .....

    Se for pelo VB, tem que declarar a variável valorTotal:

    Dim valorTotal as Double   //(pode ser Variant)

    valorTotal = [nomedoRecordSet].valorTotal

    Seria isto que vc. quer ?

    Aguardo

    Abs

    quarta-feira, 6 de fevereiro de 2019 16:35
  • Oi, Desculpa a demora pra responder.

    É pelo VB, vou mandar o código pra explicar exatamente o que eu pretendo. Segue:

     

        Public Property StrComando As String

        Public Property comando As SqlCommand
        Public Property da As SqlDataAdapter
        Public Property dt As New DataTable
        Public Property totalRecebido As String
        
        

     Public Sub TotalEmCaixa(ByVal dtInicio As String, ByVal dtFinal As String)

            Me.StrComando = "SELECT SUM(VALOR) FROM PEDLOCAL WHERE DATA BETWEEN @dtInicio AND @dtFinal"

            Try
                conexao.ConnectionString = strConexao
                comando = New SqlCommand(StrComando, conexao)
                comando.Parameters.AddWithValue("@dtInicio", dtInicio)
                comando.Parameters.AddWithValue("@dtFinal", dtFinal)

                da = New SqlDataAdapter(comando)
                da.Fill(dt) 'Recebe os dados e preenche o adaptador de dados

                Me.totalRecebido = // Gostaria de colocar aqui o resultado do select acima 

            Catch ex As Exception
                MessageBox.Show("Erro ao obter total em caixa")

            Finally
                conexao.Close()

            End Try

        End Sub

    quinta-feira, 14 de fevereiro de 2019 17:12
  • Olá, bom dia..

    Sugiro que vc. use :

    SqlDataReader reader = command.ExecuteReader();

    e salva na variável:

    valorTotal = reader[0].ToString();

    Teste assim por gentileza, e me retorne.

    Abs

    sexta-feira, 15 de fevereiro de 2019 13:25
  • Olá Guilherme,

    A execução do teu comando vai retornar apenas um valor, ou seja vai ser um execução Scalar que não necessita do adaptador. Portanto o teu código seria:

            

    Public Property StrComando As String

        Public Property comando As SqlCommand
        Public Property da As SqlDataAdapter
        Public Property dt As New DataTable
        Public Property totalRecebido As String



     Public Sub TotalEmCaixa(ByVal dtInicio As String, ByVal dtFinal As String)

            Me.StrComando = "SELECT SUM(VALOR) FROM PEDLOCAL WHERE DATA BETWEEN @dtInicio AND @dtFinal"

            Try
                conexao.ConnectionString = strConexao
                comando = New SqlCommand(StrComando, conexao)
                comando.Parameters.AddWithValue("@dtInicio", dtInicio)
                comando.Parameters.AddWithValue("@dtFinal", dtFinal)

                Me.totalRecebido = comando.ExecuteScalar()

            Catch ex As Exception
                MessageBox.Show("Erro ao obter total em caixa")

            Finally
                conexao.Close()

            End Try

        End Sub

    Espero que te ajudou, caso sim vote como útil e marque como resposta.

    sexta-feira, 15 de fevereiro de 2019 16:09
  • Obrigado a todos pelas respostas, mas consegui resolver da seguinte forma, segue o código a baixo:

        Public Sub TotalEmCaixa(ByVal dtInicio As String, ByVal dtFinal As String)

            Me.StrComando = "SELECT VALOR FROM PEDLOCAL WHERE DATA BETWEEN @dtInicio AND @dtFinal"

            Try
                conexao.ConnectionString = strConexao
                comando = New SqlCommand(StrComando, conexao)
                comando.Parameters.AddWithValue("@dtInicio", dtInicio)
                comando.Parameters.AddWithValue("@dtFinal", dtFinal)

                da = New SqlDataAdapter(comando)
                da.Fill(dt) 'Recebe os dados e preenche o adaptador de dados

                Me.totalRecebido = dt.Compute("SUM(VALOR)", "")

            Catch ex As Exception
                MessageBox.Show("Erro ao obter total em caixa")

            Finally
                conexao.Close()

            End Try

        End Sub

    domingo, 3 de março de 2019 18:05