MULTIPLICAR COLUNAS DE DATAGRIDVIEW
Boa tarde,
Tenho um datagridview criado por código e preciso multiplicar duas colunas do datagridview (Preço Unitário e Qtde) e colocar o resultado em uma nova coluna chamada Total Produto. O código segue abaixo:
Private Sub EntradaCaixaDetalhada()
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT NumVenda, NomeCliente, Especie, NomeProduto, PrecoUnitario, Quantidade [Ô] & _
[Ô]FROM TB_VendaBalcao [Ô] & _
[Ô]WHERE TB_VendaBalcao.DataVenda = [ô][Ô] & dtpDataVenda.Text & [Ô][ô][Ô] & _
[Ô]ORDER BY id_VendaBalcao DESC[Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim daFC As New SqlDataAdapter(sqlCmd)
Dim dtFC As DataTable = New DataTable([Ô]FluxoCaixa[Ô])
Dim dsFC As DataSet = New DataSet
dgvEntradas.Columns.Clear()
daFC.Fill(dsFC)
With dgvEntradas
.DefaultCellStyle.Font = New Font([Ô]SegoiUI[Ô], 7.5, FontStyle.Regular)
.ColumnHeadersDefaultCellStyle.Font = New Font([Ô]SegoiUI[Ô], 8, FontStyle.Regular)
.GridColor = Color.LightGray
.BorderStyle = BorderStyle.Fixed3D
.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.BackgroundColor = Color.White
.ColumnCount = 6
.AutoGenerateColumns = False
.Columns(0).Name = [Ô]Nº Venda[Ô]
.Columns(1).Name = [Ô]Cliente[Ô]
.Columns(2).Name = [Ô]Forma Pgto[Ô]
.Columns(3).Name = [Ô]Produto[Ô]
.Columns(4).Name = [Ô]P. Unitário[Ô]
.Columns(5).Name = [Ô]Qtde[Ô]
.Columns(0).Width = 100
.Columns(1).Width = 250
.Columns(2).Width = 90
.Columns(3).Width = 250
.Columns(4).Width = 80
.Columns(5).Width = 50
.Columns.Add([Ô]TotalProduto[Ô], [Ô]Total Produto[Ô])
Dim totalProduto As Decimal
For Each coluna As DataGridViewRow In dgvEntradas.Rows
totalProduto = totalProduto + (coluna.Cells(4).Value * coluna.Cells(5).Value)
Next
.Columns(4).DefaultCellStyle.Format = [Ô]N[Ô]
.Columns(6).DefaultCellStyle.Format = [Ô]N[Ô]
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToOrderColumns = False
.AllowUserToResizeColumns = False
.AllowUserToResizeRows = False
End With
dtFC = dsFC.Tables(0)
For Each linha As DataRow In dtFC.Rows
dgvEntradas.Rows.Add(linha(0), linha(1), linha(2), linha(3), linha(4), linha(5))
Next
End Sub
O datagridview é preenchido corretamente e a coluna Total Produtos e criada. O Problema e que não sei como colocar o resultado em cada linha da coluna Total Produtos.
Desde já agradeço.
Tenho um datagridview criado por código e preciso multiplicar duas colunas do datagridview (Preço Unitário e Qtde) e colocar o resultado em uma nova coluna chamada Total Produto. O código segue abaixo:
Private Sub EntradaCaixaDetalhada()
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT NumVenda, NomeCliente, Especie, NomeProduto, PrecoUnitario, Quantidade [Ô] & _
[Ô]FROM TB_VendaBalcao [Ô] & _
[Ô]WHERE TB_VendaBalcao.DataVenda = [ô][Ô] & dtpDataVenda.Text & [Ô][ô][Ô] & _
[Ô]ORDER BY id_VendaBalcao DESC[Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim daFC As New SqlDataAdapter(sqlCmd)
Dim dtFC As DataTable = New DataTable([Ô]FluxoCaixa[Ô])
Dim dsFC As DataSet = New DataSet
dgvEntradas.Columns.Clear()
daFC.Fill(dsFC)
With dgvEntradas
.DefaultCellStyle.Font = New Font([Ô]SegoiUI[Ô], 7.5, FontStyle.Regular)
.ColumnHeadersDefaultCellStyle.Font = New Font([Ô]SegoiUI[Ô], 8, FontStyle.Regular)
.GridColor = Color.LightGray
.BorderStyle = BorderStyle.Fixed3D
.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.BackgroundColor = Color.White
.ColumnCount = 6
.AutoGenerateColumns = False
.Columns(0).Name = [Ô]Nº Venda[Ô]
.Columns(1).Name = [Ô]Cliente[Ô]
.Columns(2).Name = [Ô]Forma Pgto[Ô]
.Columns(3).Name = [Ô]Produto[Ô]
.Columns(4).Name = [Ô]P. Unitário[Ô]
.Columns(5).Name = [Ô]Qtde[Ô]
.Columns(0).Width = 100
.Columns(1).Width = 250
.Columns(2).Width = 90
.Columns(3).Width = 250
.Columns(4).Width = 80
.Columns(5).Width = 50
.Columns.Add([Ô]TotalProduto[Ô], [Ô]Total Produto[Ô])
Dim totalProduto As Decimal
For Each coluna As DataGridViewRow In dgvEntradas.Rows
totalProduto = totalProduto + (coluna.Cells(4).Value * coluna.Cells(5).Value)
Next
.Columns(4).DefaultCellStyle.Format = [Ô]N[Ô]
.Columns(6).DefaultCellStyle.Format = [Ô]N[Ô]
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToOrderColumns = False
.AllowUserToResizeColumns = False
.AllowUserToResizeRows = False
End With
dtFC = dsFC.Tables(0)
For Each linha As DataRow In dtFC.Rows
dgvEntradas.Rows.Add(linha(0), linha(1), linha(2), linha(3), linha(4), linha(5))
Next
End Sub
O datagridview é preenchido corretamente e a coluna Total Produtos e criada. O Problema e que não sei como colocar o resultado em cada linha da coluna Total Produtos.
Desde já agradeço.
um tanto diferente do seu projeto, mas ja q ta fazendo tudo na unha, veja o q entende disso
Dim dtDados As New DataTable([Ô]Alunos[Ô])
dtDados.Columns.Add([Ô]Nome[Ô], Type.GetType([Ô]System.String[Ô]))
dtDados.Columns.Add([Ô]Nota1[Ô], Type.GetType([Ô]System.Double[Ô]))
dtDados.Columns.Add([Ô]Nota2[Ô], Type.GetType([Ô]System.Double[Ô]))
dtDados.Columns.Add([Ô]Media[Ô], Type.GetType([Ô]System.Double[Ô]))
Dim dtRow As DataRow = dtDados.NewRow()
dtRow([Ô]Nome[Ô]) = [Ô]zezinho[Ô]
dtRow([Ô]nota1[Ô]) = 9.5
dtRow([Ô]nota2[Ô]) = 7.5
dtRow([Ô]media[Ô]) = (CDbl(dtRow([Ô]nota1[Ô])) + CDbl(dtRow([Ô]nota2[Ô]))) / 2
dtDados.Rows.Add(dtRow)
dtRow = dtDados.NewRow()
dtRow([Ô]Nome[Ô]) = [Ô]luizinho[Ô]
dtRow([Ô]nota1[Ô]) = 6.5
dtRow([Ô]nota2[Ô]) = 8.5
dtRow([Ô]media[Ô]) = (CDbl(dtRow([Ô]nota1[Ô])) + CDbl(dtRow([Ô]nota2[Ô]))) / 2
dtDados.Rows.Add(dtRow)
dtRow = dtDados.NewRow()
dtRow([Ô]Nome[Ô]) = [Ô]huginho[Ô]
dtRow([Ô]nota1[Ô]) = 9.5
dtRow([Ô]nota2[Ô]) = 7.5
dtRow([Ô]media[Ô]) = (CDbl(dtRow([Ô]nota1[Ô])) + CDbl(dtRow([Ô]nota2[Ô]))) / 2
dtDados.Rows.Add(dtRow)
DataGridView2.DataSource = dtDados
Você pode fazer isto, usando o Sum e Group by na própria tabela.
Pode usar que vai dar certo.
Pode usar que vai dar certo.
Boa tarde OMAR
Tentei usar SUM e GROUP BY mas de todas as formas que tentei da erro. Com certeza estou fazendo algo errado, se puder postar algum exemplo ficarei sinceramente agradecido, estou perdidão kkkk
Tentei usar SUM e GROUP BY mas de todas as formas que tentei da erro. Com certeza estou fazendo algo errado, se puder postar algum exemplo ficarei sinceramente agradecido, estou perdidão kkkk
Criar uma tabela semelhante a sua porém sem campo data.
Não existe forma de pagamento na sua consulta, então mudei.
Private Sub EntradaCaixaDetalhada()
Dim strCmd As String = [Ô]Server=(localdb)\v11.0;Integrated Security=true;AttachDbFileName=C:\Users\Omar\Desktop\Emagrecimento\bin\Debug\.mdf[Ô]
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT NumVenda,NomeCliente, Especie, NomeProduto,Quantidade ,PrecoUnitario,(PrecoUnitario * Quantidade) as TotalProduto [Ô] & _
[Ô]FROM TB_VendaBalcao Group by NumVenda,NomeCliente, NomeProduto,PrecoUnitario,Especie,quantidade,id_VendaBalcao [Ô] & _
[Ô]ORDER BY id_VendaBalcao [Ô]
[ô]Dim strSql As String = [Ô]SELECT NumVenda,NomeCliente, Especie, NomeProduto,Quantidade ,PrecoUnitario,Sum(PrecoUnitario * Quantidade) as TotalProduto [Ô] & _
[ô] [Ô]FROM TB_VendaBalcao Group by NumVenda,NomeCliente, NomeProduto,PrecoUnitario,Especie,quantidade,id_VendaBalcao [Ô] & _
[ô][Ô]ORDER BY id_VendaBalcao [Ô]
[ô] Dim strSql As String = [Ô]SELECT NumVenda, NomeCliente, Especie, NomeProduto, PrecoUnitario, Quantidade [Ô] & _
[ô] [Ô]FROM TB_VendaBalcao [Ô] & _
[ô] [Ô]ORDER BY id_VendaBalcao DESC[Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim daFC As New SqlDataAdapter(sqlCmd)
Dim dtFC As DataTable = New DataTable([Ô]FluxoCaixa[Ô])
Dim dsFC As DataSet = New DataSet
dgvEntradas.Columns.Clear()
daFC.Fill(dsFC)
With dgvEntradas
.DefaultCellStyle.Font = New Font([Ô]SegoiUI[Ô], 7.5, FontStyle.Regular)
.ColumnHeadersDefaultCellStyle.Font = New Font([Ô]SegoiUI[Ô], 8, FontStyle.Regular)
.GridColor = Color.LightGray
.BorderStyle = BorderStyle.Fixed3D
.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.BackgroundColor = Color.White
.ColumnCount = 6
.AutoGenerateColumns = False
.Columns(0).Name = [Ô]Nº Venda[Ô]
.Columns(1).Name = [Ô]Cliente[Ô]
.Columns(2).Name = [Ô]Espécie[Ô]
.Columns(3).Name = [Ô]Produto[Ô]
.Columns(4).Name = [Ô]Qtde[Ô]
.Columns(5).Name = [Ô]P. Unitário[Ô]
.Columns(0).Width = 100
.Columns(1).Width = 250
.Columns(2).Width = 90
.Columns(3).Width = 250
.Columns(4).Width = 80
.Columns(5).Width = 50
.Columns.Add([Ô]TotalProduto[Ô], [Ô]Total Produto[Ô])
Dim totalProduto As Decimal
For Each coluna As DataGridViewRow In dgvEntradas.Rows
totalProduto = totalProduto + (dgvEntradas.CurrentRow.Cells(4).Value * dgvEntradas.CurrentRow.Cells(5).Value)
Next
.Columns(4).DefaultCellStyle.Format = [Ô]N[Ô]
.Columns(6).DefaultCellStyle.Format = [Ô]N[Ô]
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToOrderColumns = False
.AllowUserToResizeColumns = False
.AllowUserToResizeRows = False
End With
dtFC = dsFC.Tables(0)
For Each linha As DataRow In dtFC.Rows
dgvEntradas.Rows.Add(linha(0), linha(1), linha(2), linha(3), linha(4), linha(5), linha(6))
Next
End Sub
Muda de acordo a sua necessidade.
Não existe forma de pagamento na sua consulta, então mudei.
Private Sub EntradaCaixaDetalhada()
Dim strCmd As String = [Ô]Server=(localdb)\v11.0;Integrated Security=true;AttachDbFileName=C:\Users\Omar\Desktop\Emagrecimento\bin\Debug\.mdf[Ô]
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT NumVenda,NomeCliente, Especie, NomeProduto,Quantidade ,PrecoUnitario,(PrecoUnitario * Quantidade) as TotalProduto [Ô] & _
[Ô]FROM TB_VendaBalcao Group by NumVenda,NomeCliente, NomeProduto,PrecoUnitario,Especie,quantidade,id_VendaBalcao [Ô] & _
[Ô]ORDER BY id_VendaBalcao [Ô]
[ô]Dim strSql As String = [Ô]SELECT NumVenda,NomeCliente, Especie, NomeProduto,Quantidade ,PrecoUnitario,Sum(PrecoUnitario * Quantidade) as TotalProduto [Ô] & _
[ô] [Ô]FROM TB_VendaBalcao Group by NumVenda,NomeCliente, NomeProduto,PrecoUnitario,Especie,quantidade,id_VendaBalcao [Ô] & _
[ô][Ô]ORDER BY id_VendaBalcao [Ô]
[ô] Dim strSql As String = [Ô]SELECT NumVenda, NomeCliente, Especie, NomeProduto, PrecoUnitario, Quantidade [Ô] & _
[ô] [Ô]FROM TB_VendaBalcao [Ô] & _
[ô] [Ô]ORDER BY id_VendaBalcao DESC[Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim daFC As New SqlDataAdapter(sqlCmd)
Dim dtFC As DataTable = New DataTable([Ô]FluxoCaixa[Ô])
Dim dsFC As DataSet = New DataSet
dgvEntradas.Columns.Clear()
daFC.Fill(dsFC)
With dgvEntradas
.DefaultCellStyle.Font = New Font([Ô]SegoiUI[Ô], 7.5, FontStyle.Regular)
.ColumnHeadersDefaultCellStyle.Font = New Font([Ô]SegoiUI[Ô], 8, FontStyle.Regular)
.GridColor = Color.LightGray
.BorderStyle = BorderStyle.Fixed3D
.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None
.BackgroundColor = Color.White
.ColumnCount = 6
.AutoGenerateColumns = False
.Columns(0).Name = [Ô]Nº Venda[Ô]
.Columns(1).Name = [Ô]Cliente[Ô]
.Columns(2).Name = [Ô]Espécie[Ô]
.Columns(3).Name = [Ô]Produto[Ô]
.Columns(4).Name = [Ô]Qtde[Ô]
.Columns(5).Name = [Ô]P. Unitário[Ô]
.Columns(0).Width = 100
.Columns(1).Width = 250
.Columns(2).Width = 90
.Columns(3).Width = 250
.Columns(4).Width = 80
.Columns(5).Width = 50
.Columns.Add([Ô]TotalProduto[Ô], [Ô]Total Produto[Ô])
Dim totalProduto As Decimal
For Each coluna As DataGridViewRow In dgvEntradas.Rows
totalProduto = totalProduto + (dgvEntradas.CurrentRow.Cells(4).Value * dgvEntradas.CurrentRow.Cells(5).Value)
Next
.Columns(4).DefaultCellStyle.Format = [Ô]N[Ô]
.Columns(6).DefaultCellStyle.Format = [Ô]N[Ô]
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToOrderColumns = False
.AllowUserToResizeColumns = False
.AllowUserToResizeRows = False
End With
dtFC = dsFC.Tables(0)
For Each linha As DataRow In dtFC.Rows
dgvEntradas.Rows.Add(linha(0), linha(1), linha(2), linha(3), linha(4), linha(5), linha(6))
Next
End Sub
Muda de acordo a sua necessidade.
Bom dia OMAR
Seguindo suas orientações não dá nenhum tipo de erro, acho que isso quer dizer que a consulta está correta.
Necessito da data para filtrar as vendas do dia. Seguindo seu exemplo montei de tal forma a pesquisa:
Dim strSql As String = [Ô]SELECT NumVenda, NomeCliente, Especie, NomeProduto, Quantidade, PrecoUnitario, SUM(PrecoUnitario * Quantidade) as TotalProduto [Ô] & _
[Ô]FROM TB_VendaBalcao [Ô] & _
[Ô]WHERE TB_VendaBalcao.DataVenda = [ô][Ô] & dtpDataVenda.Text & [Ô][ô][Ô] & _
[Ô]GROUP BY NumVenda, NomeCliente, Especie, NomeProduto, Quantidade, PrecoUnitario [Ô] & _
[Ô]ORDER BY NumVenda DESC[Ô]
Funciona, monta a coluna Total Produto, filtra os dados pela data e ordena pela numero da venda, mas não mostra o resultado na coluna, fica em branco.
Como estamos montando a multiplicação na própria consulta - SUM(PrecoUnitario * Quantidade) as TotalProduto - será realmente necessário estas linhas de código.
Dim totalProduto As Decimal
For Each coluna As DataGridViewRow In dgvEntradas.Rows
totalProduto = totalProduto + (coluna.Cells(4).Value * coluna.Cells(5).Value)
Next
E, se necessária, não está faltando jogar o valor da operação para a coluna Total Produto do dgvEntradas.
Tenha um lindo dia.
Seguindo suas orientações não dá nenhum tipo de erro, acho que isso quer dizer que a consulta está correta.
Necessito da data para filtrar as vendas do dia. Seguindo seu exemplo montei de tal forma a pesquisa:
Dim strSql As String = [Ô]SELECT NumVenda, NomeCliente, Especie, NomeProduto, Quantidade, PrecoUnitario, SUM(PrecoUnitario * Quantidade) as TotalProduto [Ô] & _
[Ô]FROM TB_VendaBalcao [Ô] & _
[Ô]WHERE TB_VendaBalcao.DataVenda = [ô][Ô] & dtpDataVenda.Text & [Ô][ô][Ô] & _
[Ô]GROUP BY NumVenda, NomeCliente, Especie, NomeProduto, Quantidade, PrecoUnitario [Ô] & _
[Ô]ORDER BY NumVenda DESC[Ô]
Funciona, monta a coluna Total Produto, filtra os dados pela data e ordena pela numero da venda, mas não mostra o resultado na coluna, fica em branco.
Como estamos montando a multiplicação na própria consulta - SUM(PrecoUnitario * Quantidade) as TotalProduto - será realmente necessário estas linhas de código.
Dim totalProduto As Decimal
For Each coluna As DataGridViewRow In dgvEntradas.Rows
totalProduto = totalProduto + (coluna.Cells(4).Value * coluna.Cells(5).Value)
Next
E, se necessária, não está faltando jogar o valor da operação para a coluna Total Produto do dgvEntradas.
Tenha um lindo dia.
na minha opiniao nenhum dos 2 fors seria necessario
vc pode definir o datasource do grid ao dataset
dgvEntradas.DataSource=dsFC.Tables(0)
mas nao seria por esses for o problema, deve ser outra coisa....e cuidado no uso de data como criterio
vc pode definir o datasource do grid ao dataset
dgvEntradas.DataSource=dsFC.Tables(0)
mas nao seria por esses for o problema, deve ser outra coisa....e cuidado no uso de data como criterio
Boa Noite NICKOSOFT
Fiz algumas tentativas com datasource (sem os FOR, com apenas um FOR) e não funcionou, nem os dados das outras colunas entraram.
Meu conhecimento em VB.NET ainda é pequeno, não consigo nem imaginar como trabalhar com dados que necessitem serem separados por datas sem o uso das mesmas como critério.
Se possui algum exemplo, de como isso possa ser feito, ficarei muito agradecido.
Fiz algumas tentativas com datasource (sem os FOR, com apenas um FOR) e não funcionou, nem os dados das outras colunas entraram.
Meu conhecimento em VB.NET ainda é pequeno, não consigo nem imaginar como trabalhar com dados que necessitem serem separados por datas sem o uso das mesmas como critério.
Se possui algum exemplo, de como isso possa ser feito, ficarei muito agradecido.
Amanha dou uma olhada no pc, creio ter algo q ajude, na verdade a data é usada como criterio, mas varia de banck ora banco como ser usada
nao achei nada entao criei mesmo, tentando seguir exatamente seu caso, como eu nao tinha o BD, nem tabela nem nada, no load do form eu tratei de criar o banco, e a tabela, fiz em sqlce q eu acho super pratico e rapido pra pequenos projetos....
criei uma rotina pra inclusao dos dados, afinal precisava preencher a tabela, mas nao é necessario no seu caso q ja tem a tabela e ate os dados....
o q vc precisa ficou no button1, q faz a busca, passa os parametros para a funcao retornards, q faz o trabalho pesado da verdadeira busca no bd e envia como retorno um ds(dataset) a quem chamou, e eu jogo no grid, poupando até aquela formatacao, no caso fica bem mais ajeitadinho enfeitar o grid, no caso de dar nome bonito as colunas pro grid vc pode fazer direto no select do bd como na coluna q criou para o total, acho q é isso.....no caso nao precisei me preocupar com a questao de data, pq a tabela foi criada com o campo em formato data, e o argumento foi passado tmb como data
criei uma rotina pra inclusao dos dados, afinal precisava preencher a tabela, mas nao é necessario no seu caso q ja tem a tabela e ate os dados....
o q vc precisa ficou no button1, q faz a busca, passa os parametros para a funcao retornards, q faz o trabalho pesado da verdadeira busca no bd e envia como retorno um ds(dataset) a quem chamou, e eu jogo no grid, poupando até aquela formatacao, no caso fica bem mais ajeitadinho enfeitar o grid, no caso de dar nome bonito as colunas pro grid vc pode fazer direto no select do bd como na coluna q criou para o total, acho q é isso.....no caso nao precisei me preocupar com a questao de data, pq a tabela foi criada com o campo em formato data, e o argumento foi passado tmb como data
Private Caminho As String = Application.StartupPath & [Ô]\Caixa.sdf[Ô]
Dim connectionString As String = String.Format([Ô]DataSource=[Ô] & Caminho & [Ô];[Ô])
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim sqlEng As New SqlCeEngine(connectionString)
[ô]verifica se o arquivo do bando existe
If File.Exists(Caminho) = False Then
[ô]nao existe cria o BD
sqlEng.CreateDatabase()
sqlEng.Dispose()
[ô]montamos uma instrução SQL usando Create Table definindo a estrutura da tabela a ser criada
Dim cn As SqlCeConnection = New SqlCeConnection(connectionString)
cn.Open()
Dim cmd As SqlCeCommand
Dim sql As String = [Ô]create table TB_VendaBalcao ([Ô] _
& [Ô]ID INTEGER IDENTITY(1,1) PRIMARY KEY, [Ô] _
& [Ô]NumVenda integer, [Ô] _
& [Ô]NomeCliente nvarchar(50), [Ô] _
& [Ô]Especie integer, [Ô] _
& [Ô]NomeProduto nvarchar(50), [Ô] _
& [Ô]Quantidade integer, [Ô] _
& [Ô]PrecoUnitario real, [Ô] _
& [Ô]DataVenda datetime)[Ô]
cmd = New SqlCeCommand(sql, cn)
cmd.ExecuteNonQuery()
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
[ô]montando a query e passando o parametro data
Dim Comando As New SqlCeCommand
Comando.CommandText = [Ô]SELECT NumVenda, NomeCliente, Especie, NomeProduto, Quantidade, PrecoUnitario, SUM(PrecoUnitario * Quantidade) as TotalProduto [Ô] & _
[Ô]FROM TB_VendaBalcao [Ô] & _
[Ô]WHERE TB_VendaBalcao.DataVenda = @data [Ô] & _
[Ô]GROUP BY NumVenda, NomeCliente, Especie, NomeProduto, Quantidade, PrecoUnitario [Ô] & _
[Ô]ORDER BY NumVenda DESC[Ô]
Comando.Parameters.Add([Ô]@data[Ô], SqlDbType.DateTime).Value = DateTimePicker1.Text
Dim DS As New DataSet
DS = RetornarDS(Comando)
dgvEntradas.DataSource = DS.Tables(0)
End Sub
Public Function RetornarDS(ByVal strQuery As SqlCeCommand) As DataSet
Dim cn As SqlCeConnection = New SqlCeConnection(connectionString)
Try
cn.Open()
strQuery.Connection = cn
strQuery.ExecuteNonQuery()
Dim dtAdapter As New SqlCeDataAdapter
Dim dsDataSet As New DataSet
With dtAdapter
.SelectCommand = strQuery
.Fill(dsDataSet)
End With
Return dsDataSet
Catch ex As Exception
Throw ex
Finally
cn.Close()
End Try
End Function
Tópico encerrado , respostas não são mais permitidas