AGRUPAR SQL
Duvida, como agrupar produtos vendidos no dia, pelo cod do produto ou descricao.
[txt-color=#e80000]Set prs = New ADODB.Recordset
prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS quantidadeprod, valuniprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod[Ô], gConexao, adOpenKeyset, adLockOptimistic
ListaProdutos.ListItems.Clear
If prs.RecordCount = 0 Then
ListaProdutos.Enabled = False
Exit Sub
Else
ListaProdutos.Enabled = True
End If
While Not prs.EOF
Set lst = ListaProdutos.ListItems.Add(, , prs(0))
For i = 1 To 3
lst.SubItems(i) = prs(i)
Next i
prs.MoveNext
Wend[/txt-color]
Usando este código, é listado todos os produtos na tabela e é feito um calculo estranho, que não consegui entender.
[txt-color=#e80000]Set prs = New ADODB.Recordset
prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS quantidadeprod, valuniprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod[Ô], gConexao, adOpenKeyset, adLockOptimistic
ListaProdutos.ListItems.Clear
If prs.RecordCount = 0 Then
ListaProdutos.Enabled = False
Exit Sub
Else
ListaProdutos.Enabled = True
End If
While Not prs.EOF
Set lst = ListaProdutos.ListItems.Add(, , prs(0))
For i = 1 To 3
lst.SubItems(i) = prs(i)
Next i
prs.MoveNext
Wend[/txt-color]
Usando este código, é listado todos os produtos na tabela e é feito um calculo estranho, que não consegui entender.
Você precisa incluir os campos que não foram incluidos na função agregada SUM() no BROUP BY. Veja se esse campo valuniprod é realmente necessário pois se o mesmo produto tiver valor diferente, não vai agrupar, a não ser que você mande um Max() ou Avg() (Média) nele.
Set prs = New ADODB.Recordset
prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS quantidadeprod, valuniprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod, prod, valuniprod[Ô], gConexao, adOpenKeyset, adLockOptimistic
Set prs = New ADODB.Recordset prs.Open [Ô]SELECT venda, tipo,codprod,prod, SUM(QUANTIDADEprod) AS quantidadeprod, valuniprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod,quantidadeprod,valuniprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod[Ô], gConexao, adOpenKeyset, adLockOptimistic | [/th]
usei este código, baseado no exemplo do ROBIU, está somando apenas as quantidades, mas, não os valores totais.
Seu select não está igual ao que passei. Verifique. Os campos valuniprod e quantidadeprod vai trazer resultados inesperados.
Cole isso no seu código:
Cole isso no seu código:
prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS quantidadeprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod, prod[Ô], gConexao, adOpenKeyset, adLockOptimistic
ROBIU, Coloquei o código e beleza está somando as quantidades perfeitamente bem, mas, em relação aos valores totais dos produtos está aparecendo 0 , não identifiquei o problema, observando tambem que a palavra [ô][txt-color=#0000f0]valorprod[/txt-color][ô] é um campo da tabela, por isso acho que está havendo algum problema.
[th]
Este é o código, para preenchimento da Listview.
Este é o código, para preenchimento da Listview.
Então troque os alias de valorprod pra valortotalItem e QUANTIDADEprod por QUANTIDADEtotalitem por exemplo.
agora, VENDAFANTASMA???
prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS [txt-color=#e80000]quantidadetotalItem[/txt-color], SUM(valuniprod * QUANTIDADEprod) AS [txt-color=#e80000]valortotalItem[/txt-color] From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod, prod[Ô], gConexao, adOpenKeyset, adLockOptimistic
agora, VENDAFANTASMA???
Aê LLaia, teu exemplo está funcionando da mesma forma do exemplo do ROBIU, somando as quantidades, mas, os valores totais estão 0.
tem certeza que esse campo
valuniprod
tem algum valor diferente de zero?? não é possÃvel!!!
Meu caro já tinha descoberto o problema, mas, não tive tempo de postar, bom, o problema era que o total, resultado do calculo da quantidade com o valor unitário, estava sem numeros decimais, com isso a multiplicação da quantidade por um preço em cantavos 0,90, resultava em 0.
Tópico encerrado , respostas não são mais permitidas