• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Elek

Somar dados de uma coluna da datagridview

6 mensagens neste tópico

alguém me sabe dizer como é que somo os dados de uma só coluna da datagridview? A ideia é mais ou menos esta:

Produto  Quantidade      Preço

Bananas        2              2,00

Morangos      5              4,00

Kiwi            1              0,50

Depois numa label aparece o total da coluna preço somada...

Total a pagar:    6,50

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim valor As Decimal

For Each coluna As DataGridViewRow In DataGridView1.Rows

    valor = valor + coluna.Cells(2).Value 
Next


label.Text = valor

Será algo deste género, não testei mas deve funcionar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois eu tinha em ves de 2, 3 e aquilo não dava e eu não estava a perceber o problema lol... obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois eu tinha em ves de 2, 3 e aquilo não dava e eu não estava a perceber o problema lol... obrigada

Se fazes confusão qual o index da coluna, utiliza antes o nome da coluna, em vez do index.

valor = valor + coluna.Cells(2).Value

ou

valor = valor + coluna.Cells("NomeDaColuna").Value

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois eu tinha em ves de 2, 3 e aquilo não dava e eu não estava a perceber o problema lol... obrigada

O erro estava ai porque os índices da datagridview começam em zero

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

olá... bem agora a ideia é outra muito semelhante... A ideia é ao clicar mais do que uma vez no mesmo produto ele em vez de fazer:

banana    1      1€

banana    1      1€

banana    1      1€

faz:

bananas    3      3€

o que eu quero que faça é o que indica o segundo exemplo, e para tal uso o seguinte código:

   Sub ObterPrecoDaDesignacao(ByVal design As String)
        Dim preco As String = ""

        Dim sql1 As String = "Select PrecoCIva from Produtos Where Designacao = '" & design & "' "

        Dim strConn As String = My.Settings.frutariaaConnectionString1
        Dim con As New SqlConnection
        con.ConnectionString = strConn
        con.Open()

        Dim cmd As SqlCommand = New SqlCommand

        cmd.Connection = con
        cmd.CommandType = CommandType.Text
        cmd.CommandText = sql1

        Dim rdr As SqlDataReader
        rdr = cmd.ExecuteReader
        While (rdr.Read())
            preco = CStr(rdr.GetValue(0))
        End While

        rdr.Close()
        con.Close()

        ' Create an unbound DataGridView by declaring a column count.
        DataGridView1.ColumnCount = 3
        DataGridView1.ColumnHeadersVisible = True

        ' Set the column header names.
        DataGridView1.Columns(0).Name = "Designação"
        DataGridView1.Columns(1).Name = "Quant"
        DataGridView1.Columns(2).Name = "Preço"

        ' Populate the rows.
        Dim row1() As String = {design, "1", preco}
        Dim rows() As Object = {row1}

        Dim rowArray As String()


        'For Each rowArray In rows
        '    DataGridView1.Rows.Add(rowArray)
        'Next rowArray

        Dim encontrou As Boolean


        For Each rowArray In rows
            For Each col As DataGridViewRow In DataGridView1.Rows
                If rowArray(0) = col.Cells(0).Value Then
                    col.Cells(1).Value += 1
                    col.Cells(2).Value += rowArray(1)
                    encontrou = True
                Else
                DataGridView1.Rows.Add(rowArray)
                    encontrou = False

                End If

            Next

        Next rowArray

isto estava a funcionar quando dava o output do primeiro exemplo, agora modifiquei assim o código para que desse o output do segundo exemplo, mas não está a dar... até posso carregar 1000 vezes em variados produtos, que ele agora nem preenche nada...

Se alguém me puder ajudar, agradeço...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora