Ir ao conteúdo

Pesquisa SQL com VB6, selecionar itens mais vendid


Daniel.Alexander

Posts recomendados

Postado

Galera que entende de VB, estou com um problema, como consigo uma pesquisa SQL que retorne os itens que são mais vendidos de uma tabela de vendas (TabVen), sendo que, cada produto tem seu código(CodProd), nesta tabela(TabVen) as vendas são divididas por dia da venda, quero fazer um pesquisa que retorne os mais vendidos nos últimos 15 Dias.Qualquer ajuda é bem vinda, valeu.

  • Membro VIP
Postado

Bom, primeiro tem a questão dos últimos 15 dias.

Isso você resolve usando a função DateAdd(), partindo da data do dia até -15 dias atrás:

Dim QuinzeDias As String

QuinzeDias = DateAdd("d", -15, Date)
QuinzeDias = Format$(QuinzeDias, "MM/dd/yyyy")

É nessa variável QuinzeDias onde vamos definir qual a data mínima para filtrar os dados.

...

Agora, vamos à instrução SQL: primeiro você tem que definir se quer os mais vendidos por quantidade ou por valor das vendas. Você pode fazer tanto por um quanto por outro critério. Basta você incluir na instrução SQL a função agregada SUM() no campo da quantidade ou do valor das vendas, e ordenar os dados em ordem decrescente.

Não sei como você estruturou essas tabelas (você não passou nenhum detalhes sobre isso), mas vou arriscar mais ou menos como deveria ficar sua instrução SQL:

Dim Sql As String

Sql = "SELECT NomeProduto, SUM(ValorTotalVenda) AS ValorTotal " & _
        "FROM TabelaVendas " & _
        "WHERE (DataVenda>=#" & QuinzeDias & "#) " & _
        "GROUP BY NomeProduto " & _
        "ORDER BY SUM(ValorTotalVenda) DESC;"

Note que eu estou selecionando o nome do produto e fazendo a soma do valor total das vendas. Mais abaixo, a cláusula GROUP BY mantém agrupados todos os produtos que tiverem mesmo nome, enquanto que a cláusula ORDER BY mantém a soma dos valores destes produtos em ordem decrescente, pou seja, do maior valor para o menor.

E quem vai filtrar pelos últimos quinze dias é a cláusula WHERE, pelo campo correspondente à data da venda, sendo que o valor deste campo deverá ser maior ou igual ao valor da variável QuinzeDias.

É por aí.

Postado

Clemente, help me, tentei e ocorreu um erro, abaixo a rotina que estou utilizando, por favor verifique se existe algo errado, a intenção é a seguinte, no meu caso estou fazendo a query pelo item mais vendido (em quantidade) e quero que o resultado seja exibido num ListBox (ListMaisVendidos), onde me mostraria o Nome do produto (NomeProd) e a quantidade (QtdVenda), mas é apresentado um erro citando que não encontrou o item tb(QtdVenda) da coleção, estou fazendo algo de errado ?

Dim QuinzeDias As String

Dim ConsultaS As String

QuinzeDias = DateAdd("d", -15, Date)

QuinzeDias = Format$(QuinzeDias, "dd/MM/yyyy")

ConsultaS = "SELECT NomeProd, SUM(QtdVenda) AS TotalVenda " & _

"FROM TabVen " & _

"WHERE (DataVen >=#" & QuinzeDias & "#) " & _

"GROUP BY NomeProd " & _

"ORDER BY SUM(QtdVenda) DESC;"

Set tb = db.OpenRecordset(ConsultaS, dbOpenSnapshot)

Do

If tb.AbsolutePosition > -1 Then

ListMaisVendidos.AddItem " Nome " & (tb("NomeProd")) & " - Quantidade " & (tb("QtdVenda"))

tb.MoveNext

End If

Loop Until tb.EOF

  • Membro VIP
Postado
Postado Originalmente por Daniel.Alexander@28 de junho de 2005, 20:25

... mas é apresentado um erro citando que não encontrou o item tb(QtdVenda) da coleção, estou fazendo algo de errado?

...

ConsultaS = "SELECT NomeProd, SUM(QtdVenda) AS TotalVenda " & _

        "FROM TabVen " & _

        "WHERE (DataVen >=#" & QuinzeDias & "#) " & _

        "GROUP BY NomeProd " & _

        "ORDER BY SUM(QtdVenda) DESC;"

       

...

ListMaisVendidos.AddItem " Nome " & (tb("NomeProd")) & " - Quantidade " & (tb("QtdVenda"))

Quando você usa ALIAS (por exemplo: NomeCampo AS OutroNomeCampo), você não pode mais buscar o resultado do campo pelo seu nome original, mas sim apenas pelo seu ALIAS.

No caso, você não pode mais recuperar o resultado do campo QtdVenda por esse nome, mas sim pelo nome TotalVenda.

Então, você deve fazer assim:

Postado Originalmente por Daniel.Alexander@28 de junho de 2005, 20:25

ListMaisVendidos.AddItem " Nome " & (tb("NomeProd")) & " - Quantidade " & (tb("TotalVenda"))

[]'s

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!