none
como adicionar numeração de item em datagrid RRS feed

  • Pergunta

  • Ola pessoal, eu desejo adicionar uma coluna de numeração de ITENS, antes do código ter a numeração , na imagem tem 6 produto, então conta 1 para o produto na linha um assim por diante, se não tiver mais produto ele para a numeração no produto


    quarta-feira, 20 de dezembro de 2017 10:49

Respostas

  • Boa tarde.

    Tente assim.

    Private Sub PpesquisarNome() Using con As OleDbConnection = getConnection() Try con.Open() Dim sql As String = "Select CodigoProduto,Produto,UnidadeMedida,Quantidade,ValorUnitario,ValorTotal FROM Tab_Saida WHERE NOME Like '%" & txtNome.Text & "%'" Dim cmd As OleDbCommand = New OleDbCommand(sql, con) Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd) Dim dt As DataTable = New DataTable Dim dc1 As DataColumn = dt.Columns.Add("Item", Type.GetType("System.Int32")) dc1.AutoIncrement = True dc1.AutoIncrementSeed = 1 dc1.AutoIncrementStep = 1 da.Fill(dt) Dim SomaColuna As Double 'Percorre o data table para somar a coluna do salario For Each row In dt.Rows SomaColuna += CDbl(row("ValorTotal").ToString()) Next row dgvCadastro1.DataSource = dt lblTotaGeral1.Text = SomaColuna.ToString("#,#.00;(#,#.00)") 'Formata a gridview PFormataDataGridView() Catch ex As Exception MsgBox(ex.Message) Finally con.Close() End Try End Using



    MARIANO1776

    • Marcado como Resposta Arlindo António quarta-feira, 20 de dezembro de 2017 19:54
    quarta-feira, 20 de dezembro de 2017 17:06
  • Complementando, eu particularmente evito o uso do For Each, preferindo sempre que possível o For Next.

    Como sugestão para a SomaColuna, some diretamante as células do datagridview carregado.

    da.Fill(dt)
    dgvCadastro1.DataSource = dt
    
    
    Dim SomaColuna As Double = 0
                For i As Int32 = 0 To dgvCadastro1.Rows.Count - 1
                    somacoluna += CDbl(dgvCadastro1.Rows(i).Cells(número da coluna com os valores).Value)
                Next
    


    MARIANO1776

    quarta-feira, 20 de dezembro de 2017 20:27

Todas as Respostas

  • alguém pode me dar uma ajuda?

    preciso da numeração incrementada para os produtos 

    quarta-feira, 20 de dezembro de 2017 12:35
  • Bom dia.

    Como você está carregando o grid?


    MARIANO1776

    quarta-feira, 20 de dezembro de 2017 14:25
  • boa tarde , eu carrego desse modo

    Private Sub PpesquisarNome()
            Using con As OleDbConnection = getConnection()
                Try
                    con.Open()

                    Dim sql As String = "Select CodigoProduto,Produto,UnidadeMedida,Quantidade,ValorUnitario,ValorTotal FROM Tab_Saida WHERE NOME Like '%" & txtNome.Text & "%'"
                    Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
                    Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
                    Dim dt As DataTable = New DataTable
                    da.Fill(dt)

                    Dim SomaColuna As Double
                    da.Fill(dt)

                    'Percorre o data table para somar a coluna do salario
                    For Each row In dt.Rows
                        SomaColuna += CDbl(row("ValorTotal").ToString())
                    Next row
                    dgvCadastro1.DataSource = dt
                    lblTotaGeral1.Text = SomaColuna.ToString("#,#.00;(#,#.00)")

                    'Formata a gridview
                    PFormataDataGridView()
                Catch ex As Exception
                    MsgBox(ex.Message)
                Finally
                    con.Close()
                End Try
            End Using

    o que desejo e implementar um for each que permita fazer a numeração cada vez que aumentar produto

    exemplo

    ITEMS     PRODUTO

    1              LUVA

    2              APONTADOR

    se tiver mais produto ele adicionar a numeração

    quarta-feira, 20 de dezembro de 2017 15:14
  • Boa tarde.

    Tente assim.

    Private Sub PpesquisarNome() Using con As OleDbConnection = getConnection() Try con.Open() Dim sql As String = "Select CodigoProduto,Produto,UnidadeMedida,Quantidade,ValorUnitario,ValorTotal FROM Tab_Saida WHERE NOME Like '%" & txtNome.Text & "%'" Dim cmd As OleDbCommand = New OleDbCommand(sql, con) Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd) Dim dt As DataTable = New DataTable Dim dc1 As DataColumn = dt.Columns.Add("Item", Type.GetType("System.Int32")) dc1.AutoIncrement = True dc1.AutoIncrementSeed = 1 dc1.AutoIncrementStep = 1 da.Fill(dt) Dim SomaColuna As Double 'Percorre o data table para somar a coluna do salario For Each row In dt.Rows SomaColuna += CDbl(row("ValorTotal").ToString()) Next row dgvCadastro1.DataSource = dt lblTotaGeral1.Text = SomaColuna.ToString("#,#.00;(#,#.00)") 'Formata a gridview PFormataDataGridView() Catch ex As Exception MsgBox(ex.Message) Finally con.Close() End Try End Using



    MARIANO1776

    • Marcado como Resposta Arlindo António quarta-feira, 20 de dezembro de 2017 19:54
    quarta-feira, 20 de dezembro de 2017 17:06
  • Complementando, eu particularmente evito o uso do For Each, preferindo sempre que possível o For Next.

    Como sugestão para a SomaColuna, some diretamante as células do datagridview carregado.

    da.Fill(dt)
    dgvCadastro1.DataSource = dt
    
    
    Dim SomaColuna As Double = 0
                For i As Int32 = 0 To dgvCadastro1.Rows.Count - 1
                    somacoluna += CDbl(dgvCadastro1.Rows(i).Cells(número da coluna com os valores).Value)
                Next
    


    MARIANO1776

    quarta-feira, 20 de dezembro de 2017 20:27
  • Bom dia.

    só substituir o select por:

    Select ROW_NUMBER() over (ORDER BY CodigoProduto ASC) as linha, CodigoProduto,Produto,UnidadeMedida,Quantidade,ValorUnitario,ValorTotal FROM Tab_Saida WHERE NOME Like '%" & txtNome.Text & "%'

    a função ROW_NUMBER gerará uma numeração automática sem mexer no seu código.

    na cláusula ORDER BY você pode colocar o campo que quer que faça a ordenação.

    Se ajudou, coloque como respondida.

    Abs.

    • Sugerido como Resposta Fernando.Jarcen segunda-feira, 1 de janeiro de 2018 11:51
    sexta-feira, 22 de dezembro de 2017 13:38