GROUP BY EM INTERVALO DE DATAS

ARES 20/04/2011 09:03:13
#371973
Vbmaniacos, bom dia!

Estou com dúvidas quanto a elaboração de um código que agrupe a soma dos valores vendidos por vendedor em um determinado período,
entretanto, quando deterimino o período, não estou conseguindo agrupar um volume trimestral com varias vendas diárias em um só vendedor
para demonstra-lo em uma listview

segue o código

Public Sub abre_geral_vendedor()
Dim scnn As String
Dim newlist As ListItem
Dim nitens As Integer
lista.ListItems.Clear

mycon.Open [Ô]dsn=asgard_salles[Ô]

With mycmd
.ActiveConnection = mycon
.CommandType = adCmdText


.CommandText = [Ô]SELECT vendas190.cliente, cliente190.nome, cliente190.cidade, cliente190.codigo, Sum(vendas190.valor_total) AS SomaDevalor_total, vendas190.vendedor FROM cliente190 INNER JOIN vendas190 ON cliente190.codigo = vendas190.cliente where vendas.vendedor = [Ô] & Val(Me.txtvendedor) & [Ô] and vendas.data between [ô][Ô] & Format(Me.txtinicial, [Ô]YYYY/MM/DD[Ô]) & [Ô][ô] and [ô][Ô] & Format(Me.txtfinal, [Ô]YYYY/MM/DD[Ô]) & [Ô][ô] GROUP BY vendas190.cliente, cliente190.nome, cliente190.cidade, cliente190.codigo, vendas190.vendedor, vendas.data order by 5 desc[Ô]

Set myrs = .Execute


End With
Do Until myrs.EOF
Set newlist = lista.ListItems.Add(, [Ô] Key [Ô] & myrs([Ô]codigo[Ô]), myrs([Ô]codigo[Ô]))
newlist.SubItems(1) = [Ô][Ô] & myrs([Ô]nome[Ô])
newlist.SubItems(2) = [Ô][Ô] & myrs([Ô]cidade[Ô])
newlist.SubItems(3) = Format(myrs!somadevalor_total, [Ô]###,##0.00[Ô])
newlist.SubItems(4) = [Ô][Ô] & myrs([Ô]cliente[Ô])
newlist.SubItems(5) = [Ô][Ô] & myrs([Ô]cliente[Ô])

myrs.MoveNext
Loop

nitens = lista.ListItems.Count
Me.txtclientes = nitens

myrs.Close
Set myrs = Nothing
mycon.Close

End Sub

Desde já agradeço a ajuda

Att
MARCELO.TREZE 20/04/2011 09:26:17
#371978
Resposta escolhida
antes de mais nada qual é o banco de dados, qual é o tipo do campo (venda.datas) é do tipo data/hora?


ARES 20/04/2011 11:14:38
#371987
Marcelo,

Realmente, garanto que isso não vai mais acontecer.

O banco de dados e o Mysql e o campo e do tipo Date

Gostaria de usar o intervalo entre as datas para determinar um período (exemplo: 01/01/2011 a 31/03/2011) e os dados
serem agrupados por cliente.

Nome Cidade: Total
Ricardo Belo horizonte R$1.000,00
Miguel Belo Horizonte R$500,00

E assim por diante,

Desde já agradeço

MARCELO.TREZE 20/04/2011 13:23:30
#372002
primeira tentativa seria esta, alterar o formato da data

.CommandText = [Ô]SELECT vendas190.cliente, cliente190.nome, cliente190.cidade, cliente190.codigo, Sum(vendas190.valor_total) AS SomaDevalor_total, vendas190.vendedor FROM cliente190 INNER JOIN vendas190 ON cliente190.codigo = vendas190.cliente where vendas.vendedor = [ô][Ô] & Val(Me.txtvendedor) & [Ô][ô] and vendas.data between  [ô][Ô] & Format(Me.txtinicial, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô] and [ô][Ô] & Format(Me.txtfinal, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô] GROUP BY vendas190.cliente, cliente190.nome, cliente190.cidade, cliente190.codigo, vendas190.vendedor, vendas.data order by 5 desc[Ô]
ARES 27/04/2011 18:13:03
#372640
Marcelo, boa tarde!

Desculpe-me a demora em responder.

bom... fiz da forma sugerida más, o problema está em agrupar datas diferentes para gerar a curva abc, tipo:

tenho 05 clientes que me compraram em 3 meses; sendo que um deles me comprou 1 vez o outro 2 vezes e o terceiro 4 vezes em dias diferentes.

mando agrupar o cliente (ok) mando somar os valores (ok), entretanto, quando ha datas diferentes os dados não são agrupados.

Teria uma forma de usar as datas (filtro por período) no select e enviar os dados agrupados para um listview?

Att.
MARCELO.TREZE 27/04/2011 18:37:26
#372643
tente tirar o vendas.data do group by

Tópico encerrado , respostas não são mais permitidas