PEGAR A DIFERENCA EM PORCENTAGEM ENTRE 2 VALORES

WEBIER 01/10/2010 19:08:56
#354284
Para preencher um grid normalmente faço assim:

[ô]buscando os dados
Call ABRIR_BD_SEM_DATA1
SQL = [Ô]SELECT DESCRICAO, QUANTIDADE, PRECO, VALOR_DESC, (QUANTIDADE * PRECO) AS [SUB-TOTAL], iif(TIPO_DESC = [ô]R[ô], (QUANTIDADE * PRECO) - VALOR_DESC, ((QUANTIDADE * PRECO) * VALOR_DESC)/ 100) as [TOTAL], CODIGO FROM PEDIDOS_ITENS WHERE COD_PEDIDO = [Ô] & Pedido
Set RS = BD.OpenRecordset(SQL)

FormatarGrid_Itens


[ô]preenchendo o grid
Private Sub FormatarGrid_Itens()
With Grid
.Clear
.Cols = 6
.Rows = 2

.ColWidth(0) = 0
.ColWidth(1) = 5800
.ColWidth(2) = 1000
.ColWidth(3) = 1100
.ColWidth(4) = 1000
.ColWidth(5) = 1100

.TextMatrix(0, 1) = [Ô]DESCRIÇÃO[Ô]
.TextMatrix(0, 2) = [Ô]QUANT.[Ô]
.TextMatrix(0, 3) = [Ô]PREÇO[Ô]
.TextMatrix(0, 4) = [Ô]DESC.[Ô]
.TextMatrix(0, 5) = [Ô]TOTAL[Ô]


[ô]colocar os cabeçalho em negrito
For x = 0 To .Cols - 1
.Col = x
.Row = 0
.CellFontBold = True
Next x

[ô]ALINHAMENTO
[ô].ColAlignment(2) = 1

[ô]centralizar o titulo
For f = 0 To .Cols - 1
.Row = 0
.Col = f
.CellAlignment = flexAlignCenterCenter
Next f

Do Until RS.EOF

If Not IsNull(RS!DESCRICAO) Then .TextMatrix(.Rows - 1, 1) = RS!DESCRICAO
If Not IsNull(RS!QUANTIDADE) Then .TextMatrix(.Rows - 1, 2) = RS!QUANTIDADE
If Not IsNull(RS!Preco) Then .TextMatrix(.Rows - 1, 3) = Format(RS!Preco, [Ô]##,##0.00[Ô])
If Not IsNull(RS!VALOR_DESC) Then .TextMatrix(.Rows - 1, 4) = RS!VALOR_DESC
If Not IsNull(RS!Total) Then .TextMatrix(.Rows - 1, 5) = Format(RS!Total, [Ô]##,##0.00[Ô])

RS.MoveNext
.Rows = .Rows + 1

Loop

.Rows = .Rows - 1
End With
End Sub


gostaria de mostrar no grid, numa coluna extra a diferença entre duas colunas (campos) em porcentagem

exemplo:

na coluna 3 tenho o campo PREÇO
na coluna 4 tenho o campo PREÇO_COM_LUCRO
ai na coluna 5 gostaria que aparecesse a diferença dos 2 campos em PORCENTAGEM

na pratica:

PRECO PRECO_COM_LUCRO DIFERENÇA
10,00 15,00 [txt-color=#e80000]50,00%[/txt-color]


ou seja, a diferença entre os 2 valores é de 50%

Obs: sempre o campo PRECO_COM_LUCRO é maior que PRECO

isso é para exibir no grid assim:

como eu faço?
WILLVIDAL 01/10/2010 19:50:04
#354285
Resposta escolhida
cara isso é regra de 3 simples...

Supondo que :

P=Preço
L=Preço com lucro
R=porcentagem

R = ( L * 100 ) / P

O R vai trazer um valor em porcentagem, que no seu caso sempre será maior que 100, ai vc vai ter que pegar esse resultado e subtrair 100, o resultado será a diferença em porcentagem, logo:

R=R-100

De acordo com seu exemplo:

R=((15 * 100) / 10)-100
R=(1500 / 10)-100
R=(150 ) - 100

R= 50

Defina as variáveis como Double



















WEBIER 01/10/2010 21:59:30
#354288
tem como fazer isso na SQL para só jogar no flexgrid como um campo?

SELECT (calculo) as campox from.....

WILLVIDAL 02/10/2010 09:45:02
#354296
Cara, nunca tentei mas deve dar certo, se tem uma parte na sua sql (((QUANTIDADE * PRECO) * VALOR_DESC)/ 100) ), e ta dando certo é só encaixar essa fórmula, algo como ...

SELECT ( ( (PRECO_COM_LUCRO * 100) / PRECO) - 100 ) AS DIFERENCA

TENTA AI E FALA PRA GENTE..
Tópico encerrado , respostas não são mais permitidas