[Delphi i FastReport] Liczenie podsumowania w CrossTab

0

Cześć, umieściłem taki temat na forum FastReport, ale nikt nie odpowiedział i raczej nikt nie odpowie, bo wątpię, że jest tam ktoś, kto zna FastReport dobrze :|

Generalnie kwestia jest taka.
Mam CrossTab, którego wartościami jest DateTime. Wszystko jest w formacie: hh:mm
Jak wiadomo CrossTab sam sumuje wiersze. U mnie też, ale robi to źle :)
Z tego powodu, że zapewne zmienia dzień, czyli jeśli mam np:

col1   |   col2   |   col3   |   Total
---------------------------------
10:00 |  08:00  |  08:00  |   02:00

Jak widać w Total mam 02:00, a chcę mieć 26:00.
Jak to osiągnąć?
Wiem, że mógłbym zmieniać bazę i liczyć to wszystko w bazie, ale to brzydkie rozwiązanie. Poza tym po to jest podsumowanie, żeby go używać. Tylko jak?

0

OK, po kilku dniach, uporałem się z tym.
Otóż trzeba trochę popisać w skrypcie FastReport.

Oto kod, który stworzyłem(może można zrobić to inaczej, lepiej, łatwiej, szybciej, nie wiem, ale ja se poradziłem tak):

var  
  rowSecs: integer; //sekundy dla rekordu

procedure DBCross1OnPrintCell(Memo: TfrxMemoView; RowIndex, ColumnIndex, CellIndex: Integer; RowValues, ColumnValues, Value: Variant);
var  
  h, m, s, ms: word;  
  hStr, mStr: string;                                         
begin  
  if ColumnIndex = DBCross1.ColCount - 1 then //kolumna to podsumowanie
  begin    
    h:=rowSecs div 3600; //godziny    
    rowSecs:=rowSecs - (3600*h);     
    m:=rowSecs div 60; //minuty    
    s:=rowSecs - (60*m); //sekundy    

    if h>9 then hStr:=intToStr(h) else hStr:='0'+intToStr(h); //zawsze pokaż (h)hh:mm    
    if m>9 then mStr:=intToStr(m) else mStr:='0'+intToStr(m);        
    Memo.Text:=hStr+':'+mStr;    
    rowSecs:=0;  
  end else                                                                
  begin                  
    if Value<>null then    
    begin                    
      DecodeTime(Value, h, m, s, ms);      
      s:=s+(m*60)+(h*3600);                                                  
      rowSecs:=rowSecs + s;    
    end;  
  end;              
end;

begin  
  rowSecs:=0;                            
end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1