Ir para conteúdo

POWERED BY:

Arquivado

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

Irenko

Select para ranking

Recommended Posts

TbResumo.Open "SELECT Distinct OS, Sum(Quant*Unit) AS Total FROM Dados GROUP BY OS ORDER BY Sum(Quant*Unit) DESC", BancoSobra, adOpenDynamic, adLockOptimistic

 

Com a query acima eu busco a OS com o maior valor e apresento o resultado. Acontece o seguinte, tenho as OS:

 

135421 - 10.000,00

135433 - 12.500,00

135444 - 1.000,00

135466 - 1.500,00

 

Bom acima no ranking esta a OS 135433 com 12.500,00 porem todas são do grupo (1354), como faria para buscar os grupos identicos e somar seus valores pesquisando os quatro primeiros dígitos e dando o resultado de 25.000,00?

 

 

Segue abaixo o código completo:

 

Sub TelaIndice()

AtivaIcon

Dim textranking As Integer

textranking = 3

Set TbResumo = New ADODB.Recordset

TbResumo.Open "SELECT Distinct OS, Sum(Quant*Unit) AS Total FROM Dados GROUP BY OS ORDER BY Sum(Quant*Unit) DESC", BancoSobra, adOpenDynamic, adLockOptimistic

 

Do While Not TbResumo.EOF

 

If textranking = 3 Then

 

Label92.Caption = TbResumo("OS")

 

Label105.Caption = Format(TbResumo("Total"), "#,##0.00")

 

End If

If textranking = 2 Then

 

Label93.Caption = TbResumo("OS")

 

Label106.Caption = Format(TbResumo("Total"), "#,##0.00")

 

End If

If textranking = 1 Then

 

Label94.Caption = TbResumo("OS")

 

Label107.Caption = Format(TbResumo("Total"), "#,##0.00")

 

End If

If textranking = 0 Then

 

Label95.Caption = TbResumo("OS")

 

Label108.Caption = Format(TbResumo("Total"), "#,##0.00")

 

End If

textranking = (textranking - 1)

 

TbResumo.MoveNext

Loop

 

'Fecha recordset

TbResumo.Close

Set TbResumo = Nothing

Call Gerar

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

O banco é access e uso ADO. Tentei assim:

 

TbResumo.Open "SELECT Mid(OS, 1, 4), Sum(Quant*Unit) AS Total FROM Dados GROUP BY Mid(OS, 1, 4) ORDER BY Sum(Quant*Unit) DESC", BancoSobra, adOpenDynamic, adLockOptimistic

 

Acho que no access o MID n;ao funciona na Query e da o erro:

 

(Item não pode ser encontrado na coleção correspondente ao nome ou ordinal solicitado)

 

nessa linha:

 

Label92.Caption = TbResumo("OS")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, para linguagem sql não tem MID, mas tem algo semelhante: substring, usa-se da mesma forma:

 

substring(parâmetro, n° que inicia, quantidade de casas a serem lidas)

 

Ms no vb você pode deixar a quantidade de casas em branco que ele entende que será até o fim, e no SQL isso não é possível, você precisa indicar para ele a quantidade de casas sempre.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.