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

Problemas No Rave Reports (sum)


Guest Daniel Becher

Pergunta

Guest Daniel Becher

Pessoal,

Tenho em um relatório Rave (.rpt) um componente chamado CalcText1 que faz a soma dos campos de uma tabela paradox.

Fica algo como Sum(Total_Hora), isso é feito direto no Rave, sem comando SQL específico.

O DisplayFormat é hh:nn:ss.

Esta função SOMA todas as horas trabalhadas de determinado colaborador de uma empresa. Mas ele calcula de uma forma errada pra mim. Tipo, digamos que eu tenha dois registro, um que o funcionario trabalhou 20 horas e outro que ele trabalhou 5h. Ele conta até 23h59h59s, depois, ele zera e conta apenas o excedente, neste caso hipotetico, 1h (25h - 24h).

Não sei se me fiz entender, mas se sim, gostaria de uma força de vocês.

Desde já, agradeço.

Daniel Becher

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Eu não trabalho com o Rave, mas acho que não é esta a questão do seu problema. Vejamos se consigo lhe ajudar...

Mas ele calcula de uma forma errada pra mim. Tipo, digamos que eu tenha dois registro, um que o funcionario trabalhou 20 horas e outro que ele trabalhou 5h. Ele conta até 23h59h59s, depois, ele zera e conta apenas o excedente, neste caso hipotetico, 1h (25h - 24h).
Parece razoável já que você definiu o DisplayFormat = "hh:nn:ss". Se você observar melhor, verá que o resultado deve ser 1 dia e 1 hora. Tanto que se você mudar DisplayFormat para "dd/mm/yyyy hh:nn:ss", provavelmente perceberá o que estou falando.

Vejamos o tipo TDateTime. Na verdade é um float, onde a parte inteira contém a data e a parte fracionária contém a hora. Então quando você soma horas, está falando da parte fracionária, sendo que o acúmulo resultará em um número >= 1, ou seja, com uma parte inteira - neste contexto - data.

Não sei se é padrão, mas quando a parte inteira de um campo TDateTime/TDate é 0 (zero) a data retornada é 30/12/1899. Então no seu exemplo, se utilizar a formatação que sugeri anteriormente, você teria como resultado "31/12/1899 01:00:00".

Como não conheço o Rave e esse componente CalcText, não tenho muita idéia de como você poderia resolver esse problema. Vamos tentar o seguinte:

- Este componente pode lhe retornar um valor float como resultado? Se sim, você não utilizaria a formatação e poderia utilizar este valor para calcular corretamente a quantidade de horas conforme você deseja, ou;

- Seria possível você obter este sum direto na sua consulta? Se sim, ele lhe resultaria também num float que de igual forma viabilizaria o cálculo correto.

Se você puder obter o valor no formato float (TDateTime/TDate...), você poderia, então, utilizar a função abaixo para apresentar em um "label", no seu relatório, a quantidade de horas no formato esperado - p.e.: "125:30:15"

function FullTimeToStr(SUMTime :TDateTime) :string;
var
  StrHora,
  StrMin :string;
  TotalHoras :double;
begin
 // aqui você começa a calcular as horas
 // SUMTime é o total de horas que você obteve na consulta ou do componente
 // multiplicar por 24 transforma os dias (parte inteira) em horas
 // já somando com a hora cheia contida na parte fracionária
  TotalHoras := SUMTime *24;
 // Formata a hora "cheia", utilizando a parte inteira da variável.
 // A parte fracionária estará contendo os minutos e segundos
  StrHora := FormatFloat('##0:', Int(TotalHoras));
 // dividimos a parte fracionária (atual) por 24 para obtermos 
 // novamente o formato time. Podemos então utilizar normalmente
 // a função de formatação para obtermos a fração de tempo restante
  StrMin := FormatDateTime('nn:ss', Frac(TotalHoras)/24);
 // Concatenando os resultados
  Result := StrHora +StrMin;
end;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --OTAVIO --

Cara eu to usando o rave report e queria como faço pra na ultima folha do relatorio apareçer a quantidade de registros listados.Eu já pesquisei que existe um compomente chamado

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,4k
×
×
  • Criar Novo...