Ir para conteúdo
Fórum Script Brasil
  • 0

Quickreport


Guest Visitante

Pergunta

Pessoal....

Eu tenho um relatorio no quick report.....simples..ele mostra o total de extras do funcionario assim:

funcionario: Jose da Silva

data.........QtdHorasExtras-----Percentual de aumento de HE.

=======================================

janeiro 10 100,00%

fev 15 50,00%

mar 20 33,33%

abril 15 -25,00%

ou seja eu gostaria que no percentual aparecesse o percentual de horas extras eu relação ao registro anterior

o problema é que não to conseguindo fazer este calculo...

eu usei um QRexpr com esta expressão= SUM(((query1.QTDHE) / SUM(query1.QTDHE)*100)-100)

MAS não da certo.....

alguém poderia me ajudar...?

muito Grato

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Perdão...pessoal...meu nome não saiu...saiu com Visitante ai Logei e estou inserindo de novo o meu tópico..

Pessoal....

Eu tenho um relatorio no quick report.....simples..ele mostra o total de extras do funcionario assim:

funcionario: Jose da Silva

data.........QtdHorasExtras-----Percentual de aumento de HE.

=======================================

janeiro.................... 10................................. 100,00%

fev ..........................15................................. 50,00%

mar......................... 20................................. 33,33%

abril ........................15.................................. -25,00%

ou seja eu gostaria que no percentual aparecesse o percentual de horas extras eu relação ao registro anterior

o problema é que não to conseguindo fazer este calculo...

eu usei um QRexpr com esta expressão=

SUM(((query1.QTDHE) / SUM(query1.QTDHE)*100)-100)

MAS não da certo.....

alguém poderia me ajudar...?

:(

muito Grato

Link para o comentário
Compartilhar em outros sites

  • 0
ou seja eu gostaria que no percentual aparecesse o percentual de horas extras eu relação ao registro anterior

o problema é que não to conseguindo fazer este calculo...

Eder, você poderia dar um exemplo de como deveria ser o resultado para ajudar a entender? Quem sabe possa dar alguma sugestão.

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Eder,

faz assim:

declare tres variaveis, uma integer e duas Real:

var
  Form1: TForm1;
  i : integer;
  Porc, vlAnt : Real;
seu relatório deve ter um QRBand Title, correto? no evento BeforePrint desse band coloque:
procedure TForm1.QRBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
  i := 1;
end;
Pra exibir o valor da porcentagem, use um QRLabel, e no evento OnPrint coloque:
procedure TForm1.QRLabel1Print(sender: TObject; var Value: String);
begin
  if i = 1 then begin
    Value := '100,00%';
    vlAnt := Query1.FieldByName('QtdHorasExtras').Value;
    inc(i);
  end else begin
    Porc := (Query1.FieldByName('QtdHorasExtras').Value - vlAnt) / vlAnt * 100;
    vlAnt := Query1.FieldByName('QtdHorasExtras').Value;
    Value := FormatFloat('0.00',Porc)+'%';
  end;
end;

Entedeu?

Abs. Propr'amador.

B)

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo..Programador....deu certo o seu codigo..porem teve dois probleminhas...que não to conseguindo resolver...

1º-quando a hora extra do camarada for 0 zero ai da erro na divisão..

2º-Como são varios funcionarios..primeiro o relatorio lista um de cada vez...ou seja lista o jose depois a maria e assim por diante....e ao termino de cada um ,....ele faz um somatorio de horas extras....o problema é que no termino de cada um.....quando vai pro proximo ...o primeiro registo deveria dar percentual 0 zero pois se é o primeiro não aumentou nem diminuiu ...certo?? o que ele está fazendo é conta do ultimo funcionario..entendeu??é como se fosse tudo um unico funcionario.........

de mais ele calculo legal...

Terias alguma solução pra resolver estes pequenos problemas?

Um abraço e muito grato por ajudar...t+

;)

Link para o comentário
Compartilhar em outros sites

  • 0

Eder,

quanto ao erro da divisão, é só colocar um if

TForm1.QRLabel1Print(sender: TObject; var Value: String);
begin
  if i = 1 then begin
     Value := '0,00%';
     vlAnt := Query1.FieldByName('QtdHorasExtras').Value;
     inc(i);
  end else begin
     if Query1.FieldByName('QtdHorasExtras').Value > 0 then begin
        Porc := (Query1.FieldByName('QtdHorasExtras').Value - vlAnt) / vlAnt * 100;
        Value := FormatFloat('0.00',Porc)+'%';
     end else Value := '0,00%';
     vlAnt := Query1.FieldByName('QtdHorasExtras').Value;
  end;
end;

E quanto ao outro problema,

se você usar um QRBand Detail pra exibir os funcionarios e um QRSubDetail para exibir as horas é só você colocar no evento BeforePrint ou AfterPrint do QRBand Detail o código pra zerar o valor de i da mesma forma como fiz no QRBand Title aí você pode até tirar esse código do Band Title.

Entendeu???

Abs. Progr'amador.

B)

Link para o comentário
Compartilhar em outros sites

  • 0

:yeah: Amigão.....deu tudo certinho.... :clap: :clap:

ficou ótimo...

Valeu...muito grato..mesmo..

só não entendi..bem o seu codigo....

gostaria que você me desse uma preve descrição se possivel..da variavel que você criou chamada (I)

NÃO ENtendi o que ela faz realmente....

De mais meu amigo..muito Grato e até.

t+ :thumbsup:

Link para o comentário
Compartilhar em outros sites

  • 0

Vixi, esse negoço de esplicação eu só meio ruim, eu num tenho aquela linguagem tecnicas dos caras aí, sou autodidata :D

O QuickReport abre o relatório em um especie de loop, ou seja, ele abre um funcionario em seguida os registros de horas, outro funcionario e os registros, etc..., então cada print (before ou after) do band dos funcioario ele retorna o valor de i = 1, aí é spó execultar aquele IF i = 1.

funcionario 1

i = 1

i = 2

i = 3

i = 4

-------

funcionario 2

i = 1

i = 2

i = 3

i = 4

na verdade a váriavel i é simplesmente pra identificar o inicio de cada funcionario entende, i := 1, só pra indicar a primeira linha, já que a primeira hora extra não é calculado a porcentagem.

Hehe,

eu acho deu pra entender!

ou não!??

Abs. Progr'amador.

B)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...