A što ne praviš report iz koda, šta će ti Report builder?
Uopšte nije komplikovano, evo za primer jedna moja funkcija - kao parametar prosledim komponentu tipa TRichEdit, pa posle imaš opciju snimanje u .rtf.
Code:
function TFStanje.StampajStanje(RE: TRichEdit; SIFKOM: integer): TStrings;
var Q: TSQLQuery;
i: integer;
s: string;
vred_zal, vred : double;
begin
with RE.DefAttributes do
begin
Size:=10;
Name:='Courier New';
Style:=[];
Color:=clBlack;
end;
with RE.SelAttributes do
begin
Style:=[fsBold];
Size:=14;
s:='STANJE ZALIHA U MAGACINU ';
if sifkom=1 then
s:=s+'VELEPRODAJE'
else
s:=s+'KONSIGNACIJE'; // tu dodati za kojeg komitenta
RE.Lines.Append(s);
RE.Lines.Append('');
Style:=[];
Size:=11;
RE.Lines.Append('Dana: '+formatdatetime('dd.mm.yyyy hh.nn',now));
end;
RE.Lines.Append('');
with RE.SelAttributes do
begin
Style:=[fsBold];
RE.Lines.Append(
dopuni('RB', 4, ' ')
+dopuni('ŠIF.ROB.', 10, ' ')
+dopuni('NAZIV ROBE', 32, ' ')
+centar('JM', 4, ' ')
+dopuniR('ULAZI', 9, ' ')
+dopuniR('IZLAZI', 9, ' ')
+dopuniR('STANJE', 9, ' ')
+dopuniR('VREDNOST', 11, ' ')
);
Style:=[];
end;
RE.Lines.Append(linija(88,'-'));
//
q:=TSQLQuery.Create(self);
try
q.SQLConnection:=DME.SQLConnection1;
q.SQL.Append('select s.SIFROB, m.NAZROB, s.ULAZI_S, s.IZLAZI_S, s.STANJE_S, m.MINZAL,');
q.SQL.Append(' m.JM, m.CENMAT_D, s.STANJE_S*m.CENMAT_D as VRED');
q.SQL.Append('from STANJE s, ROBA m');
q.SQL.Append('where s.SIFROB=m.SIFROB and s.SIFKOM=:SIFKOM');
q.SQL.Append('order by NAZROB');
q.Prepared:=true;
q.ParamByName('SIFKOM').AsInteger:=SIFKOM;
Q.Open;
i:=0; vred_zal:=0;
while not q.Eof do
try
inc(i);
vred:= q.fieldbyname('VRED').AsFloat;
if q.fieldbyname('STANJE_S').AsFloat<=q.fieldbyname('MINZAL').AsFloat then
RE.SelAttributes.Style:=[fsBold];
RE.Lines.Append(
dopuni(inttostr(i), 4, ' ')
+dopuni(q.fieldbyname('SIFROB').AsString, 10, ' ')
+dopuni(q.fieldbyname('NAZROB').AsString, 32, ' ')
+centar(q.fieldbyname('JM').AsString, 4, ' ')
+dopuniR(formatfloat('0.00',q.fieldbyname('ULAZI_S').AsFloat), 9, ' ')
+dopuniR(formatfloat('0.00',q.fieldbyname('IZLAZI_S').AsFloat), 9, ' ')
+dopuniR(formatfloat('0.00',q.fieldbyname('STANJE_S').AsFloat), 9, ' ')
+dopuniR(formatfloat('0.00',VRED), 11, ' ')
);
RE.SelAttributes.Style:=[];
finally
q.Next;
end;
RE.Lines.Append(linija(88,'-'));
RE.Lines.Append(
dopuni('SUMA', 77, ' ')
+dopuniR(formatfloat('0.00', vred_zal), 11, ' ')
);
RE.Lines.Append('');
RE.Lines.Append('Napomena: stanje robe ispisanih zacrnjeno je ispod minimalnih zaliha');
finally
q.Free;
end;
end;