Jump to content
Fórum Script Brasil
  • 0

Quickreport


Guest Visitante
 Share

Question

Guest Visitante

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 to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649k
×
×
  • Create New...