DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Fórum DevMedia


Autor
Mensagem
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 30/8/2010 02:03:01 PM
 
Amigos

Como posso obter o total do valor armazenado?

Ex.

Tenho a tabela e cada item recebe um valor. Ao final, todo valor deverá ser somado.

#Código
var
hr1   : TDateTime;
hr2   : TDateTime;
hrt   : TDateTime;
begin
  hr1 := sdsTabela.FieldByName('INI_PAUSA').AsDateTime;
  hr2 := sdsTabela.FieldByName('FIM_PAUSA').AsDateTime;
  hrt := hr2-hr1;
  (frxRelatorio.FindObject('Total_Pausa') as TfrxMemoView).Text := TimeToStr(hrt);
end;


Até aí tudo bem!
E pra colocar um total do hrt?
Vejo que preciso de mais uma variável, certo?

Ex. visualizado!

COD    INICIO   FIM       TOTAL
01       13:00    13:40    00:40
02       14:00    14:30    00:30

TOTAL GERAL                01:10

ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 02:07:30 PM
 
Você pode criar um campo agregado no simpleDataset.
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 30/8/2010 03:06:49 PM
 
Não sei como faz isso!
Eu tentei por osmose, mas quando adiciono esse campo os outros campos somem.

ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 03:18:35 PM
 
Selecione o ClientDataset, e modifique a sua propriedade AggregatesActive para True a fim de habilitar o uso de campos agregados.  

Aplique um duplo clique no ClientDataset e no seu editor de campos clique com o botão direito do mouse e selecione a opção New Field.

 

Na tela de configuração do campo, defina sua propriedade Name como VirtTotalGeral, sua propriedade Type como Time e em Field Type, selecione a opção Aggregate e em seguida clique no botão OK para criar o campo.

 

O campo agregado aparece numa área destacada em virtude de não haver uma ocorrência deste para cada registro como no campo calculado convencional, este ocorre uma vez só para todo o ClientDataSet.

Prosseguindo com a sua configuração, selecione o campo VirtTotalGeral no editor de campos e modifique a sua propriedade Active para True a fim de habilitarmos o seu uso. na propriedade Expression defina o seguinte comando SUM(Campo), podemos notar bastante semelhança com o comando referente na linguagem sql, justamente para agregar valores calculados ou não, numa amostragem a partir de um campo.

  Atenciosamente   Eriley

ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 03:26:53 PM
 
Não vi que você não tinha o campo total de horas ele é calculado no Delphi e não no sql, então esqueça o campo agregado e faça um While varendo sua consulta depois de aberta e também grave numa variavel, depois basta exibir a variavel no relatório.
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 30/8/2010 03:31:36 PM
 
Tentei aqui, mas não rolou.
Detalhe:
Field Type, selecione a opção Aggregate

O type Aggregate não existe quando seleciona TIME.

ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 30/8/2010 03:36:45 PM
 
Leia meu ultimo post.
LEONARDO BERTOLINI
 


País: Brasil
Estado: MG
Cidade: Contagem
Mensagens: 53
 Postado em: 30/8/2010 11:46:26 PM
 
Boa Noite Amigos,

Bom pelo que entendi o mais simples possível seria criar uma variável global (la em cima no Private) e ir somando a variavel hrt nela.

ValTotal := ValTotal + hrt;

Depois exibir ValTotal no relatório.

abraços

twiiter.com/leobertolini

ERILEY VILAGRANDE BARBOSA
 

 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 31/8/2010 07:59:10 PM
 
Conseguiu?
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 6/9/2010 12:02:13 PM
 
Consegui assim:

Segue o código inteiro!

#Código
procedure TDMForm.frxRelatorioBeforePrint(Sender: TfrxReportComponent);
var
hr1             :  TDateTime;
hr2             :  TDateTime;
hrt             :  TDateTime;
ini_oper        :  TDateTime;
fim_oper        :  TDateTime;
tot_oper        :  TDateTime;
hr_trab         :  TDateTime;
tmp_requ        :  TDateTime;
begin
  if (FormADQ652.cbxOperador.Checked) then
  begin
    (frxRelatorio.FindObject('GroupHeader1') as TfrxGroupHeader).StartNewPage := True;
  end;
  begin
    hr1 := sdsOperad.FieldByName('INI_PAUSA').AsDateTime;
    hr2 := sdsOperad.FieldByName('FIM_PAUSA').AsDateTime;
    hrt := hr2-hr1;
    (frxRelatorio.FindObject('Total_Pausa') as TfrxMemoView).Text := TimeToStr(hrt);
  end;
  begin
    tmp_requ := sdsOperad.FieldByName('TEMPO_TURNO').AsDateTime;
    ini_oper := sdsOperad.FieldByName('INI_OPER').AsDateTime;
    fim_oper := sdsOperad.FieldByName('FIM_OPER').AsDateTime;
    tot_oper := fim_oper - ini_oper;
    hr_trab := tot_oper - hrt;

    if hr_trab < tmp_requ then
    begin
       (frxRelatorio.FindObject('hr_trab') as TfrxMemoView).Text := TimeToStr(hr_trab);
       (frxRelatorio.FindObject('hr_trab') as TfrxMemoView).Font.Color := clRed;
    end
    else
    begin
       (frxRelatorio.FindObject('hr_trab') as TfrxMemoView).Text := TimeToStr(hr_trab);
       (frxRelatorio.FindObject('hr_trab') as TfrxMemoView).Font.Color := clBlack;
    end;
  end;
end;


web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03