PEGAR A DIFERENCA EM PORCENTAGEM ENTRE 2 VALORES
                    Para preencher um grid normalmente faço assim:
[ô]buscando os dados
[ô]preenchendo o grid
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?
            [ô]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 Subgostaria 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?
                    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
 
                
            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
                    tem como fazer isso na SQL para só jogar no flexgrid como um campo?
SELECT (calculo) as campox from.....
                
            SELECT (calculo) as campox from.....
                    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..
            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
                    
                
