Замучили баги в FASTREPORT 3

отредактировано 21:53 Раздел: FastReport 3.0
народ можно ли както заставить FASTREPORT правильно считать
--- есть код в отчете---
var
Q1,Q2:TQuery;
a,i,j:integer;
m:TfrxDBDataSet;
T_Orenda_all,T_Orenda_all_pdv,T_KomunalPoslugy_all,T_KomunalPoslugy_all_pdv:String;
T_KP,T_KP_pdv,T_Orenda,T_Orenda_pdv:String;
x,KomunalPoslugy,KomunalPoslug_all,KomunalPoslugy_pdv,Orenda,Orenda_all,Orenda_pdv:Extended;
procedure Page1OnAfterPrint(Sender: TfrxComponent);
begin
//Q1.Close;
//Q1.Free;
//m.Free;
end;

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
i:=i+1;
KomunalPoslugy:=((Q1.FieldByName('tr_stoki').AsFloat*Q1.FieldByName('people').AsFloat*25*28/1000)+(Q1.FieldByName('squar').AsFloat*Q1.FieldByName('tr_osvet').AsFloat*Q1.FieldByName('tr_kVT').AsFloat)+(Q1.FieldByName('squar').AsFloat*Q1.FieldByName('tr_otop').AsFloat)+(Q1.FieldByName('people').AsFloat*Q1.FieldByName('tr_woter').AsFloat*25*28/1000)+(Q1.FieldByName('mysor').AsFloat));
//KomunalPoslug_all:=KomunalPoslug_all+KomunalPoslugy;
KomunalPoslugy_pdv:=KomunalPoslugy*0.2;
T_KP_pdv:=FormatFloat('0.00',KomunalPoslugy_pdv);
KomunalPoslugy:=KomunalPoslugy+KomunalPoslugy_pdv;
T_KP:=FormatFloat('0.00',KomunalPoslugy);
Orenda:=Q1.FieldByName('squar').AsFloat*Q1.FieldByName('orend_stav').AsFloat*Q1.FieldByName('ind_infly').AsFloat;
Orenda_pdv:=Orenda*0.2;
T_Orenda_pdv:=FormatFloat('0.00',Orenda_pdv);
Orenda:=Orenda+Orenda_pdv;
T_Orenda:=FormatFloat('0.00',Orenda);
end;

procedure Footer1OnBeforePrint(Sender: TfrxComponent);
var
Orenda_pdv,KomunalPoslugy_pdv:Extended;
begin
T_Orenda_all:=FormatFloat('0.00',Orenda_all);
T_Orenda_all_pdv:=FormatFloat('0.00',Orenda_all*0.2);
T_KomunalPoslugy_all:=FormatFloat('0.00',KomunalPoslug_all );
T_KomunalPoslugy_all_pdv:=FormatFloat('0.00',KomunalPoslug_all*0.2);
end;

begin
i:=0;
Memo7.text:='HELLO';
KomunalPoslug_all:=0;
Orenda_all:=0;
Q1:=TQuery.Create(nil);
m:=TfrxDBDataSet.Create(nil);
Q1.DataBaseName:=dbpath_;
Q1.SQL.Clear;
Q1.SQL.Add('select id from monthdb');
Q1.SQL.Add('where name=:name');
Q1.ParamByName('name').AsString:=mon_;
Q1.Open;
a:=Q1.FieldByName('id').AsInteger;
Q1.Close;
Q1.SQL.Clear;
Q1.SQL.Add('select f1.*, f2.* from sch_orenda f1, orendator f2');
Q1.SQL.Add('where month_=:month_ and year_=:year_ and f1.orendator=f2.id ');
Q1.SQL.Add(' order by f2.name');
Q1.ParamByName('month_').AsInteger:=a;
Q1.ParamByName('year_').AsInteger:=yea_;
Q1.Open;
Q1.First;
while not(Q1.EOF) do
begin
x:=(Q1.FieldByName('squar').AsFloat*Q1.FieldByName('orend_stav').AsFloat*Q1.FieldByName('ind_infly').AsFloat);
Orenda_all:=Orenda_all+(Q1.FieldByName('squar').AsFloat*Q1.FieldByName('orend_stav').AsFloat*Q1.FieldByName('ind_infly').AsFloat);
KomunalPoslug_all:=KomunalPoslug_all+((Q1.FieldByName('tr_stoki').AsFloat*Q1.FieldByName('people').AsFloat*25*28/1000)+(Q1.FieldByName('squar').AsFloat*Q1.FieldByName('tr_osvet').AsFloat*Q1.FieldByName('tr_kVT').AsFloat)+(Q1.FieldByName('squar').AsFloat*Q1.FieldByName('tr_otop').AsFloat)+(Q1.FieldByName('people').AsFloat*Q1.FieldByName('tr_woter').AsFloat*25*28/1000)+(Q1.FieldByName('mysor').AsFloat));
Q1.Next;
end;
Q1.First;
m.DataSet:=Q1;
MasterData1.DataSet:=m;
end.
так вот считает x, Orenda_all, KomunalPoslug_all - возвращает полный бред

Комментарии

  • отредактировано 21:53
    Ничего, кроме воспользоваться встроенным в FR отладчиком, посоветовать не могу. Возможно, какие-то поля возвращают Null?

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.