Mi funcion para mostrar el reporte
Suprimido el reporte tiene 10 veces mas datos, solo muestro pocos datos aca, asi se entiende
Código Delphi
[-]
procedure PrintDailyStatement(number:string;filter:string);
var
sql:string;
MyReport:TfrxReport;
RptFr3:string;
QryAux1:TADOQuery;
DsrAux1:TDataSource;
QryAux2:TADOQuery;
DsrAux2:TDataSource;
QryAux3:TADOQuery;
DsrAux3:TDataSource;
begin
QryAux1:=tadoquery.Create(nil);
DsrAux1:=TDataSource.Create(nil);
QryAux2:=tadoquery.Create(nil);
DsrAux2:=TDataSource.Create(nil);
QryAux3:=tadoquery.Create(nil);
DsrAux3:=TDataSource.Create(nil);
sql:= ' SELECT D.Number, D.PrintDate, D.TotDuty, D.TotTax,'+
' S.Importer, S.Broker, S.EstDuty, S.EstiTax'+
' FROM DailyStatements D'+
' LEFT JOIN Shipment_ABI S ON (D.Number = S.Number)'+
' WHERE D.Number <> '+QuotedStr('');
if filter = '' then
sql:= sql +
' AND D.Number='+QuotedStr(number)+
' ORDER BY D.Number'
else
sql:= sql + filter + ' ORDER BY D.Number';
dressqueries(QryAux1,sql,Datafiles.dbBROKERAGE);
DsrAux1.DataSet:=QryAux1;
Datafiles.frxDBDataset1.DataSource := DsrAux1;
sql:= ' SELECT SUM(FeeAmount) Total, C.Description,'+
' D.Number, D.PrintDate, D.TotDuty, D.TotTax'+
' FROM DailyStatements D'+
' LEFT JOIN Shipment_ABIFees F ON (D.Number = F.Number)'+
' LEFT JOIN BASICO.dbo.Codes C ON (C.Code=F.FeeCode)'+
' WHERE D.Number <> '+QuotedStr('');
if filter = '' then
sql:= sql +
' AND D.Number='+QuotedStr(number)+
' GROUP BY F.FeeCode, C.Description,'+
' D.Number, D.PrintDate, D.TotDuty, D.TotTax'+
' ORDER BY D.Number'
else
sql:= sql + filter +
' GROUP BY F.FeeCode, C.Description,'+
' D.Number, D.PrintDate, D.TotDuty, D.TotTax'+
' ORDER BY D.StatementNumber';
dressqueries(QryAux2,sql,Datafiles.dbBROKERAGE);
DsrAux2.DataSet:=QryAux2;
Datafiles.frxDBDataset2.DataSource := DsrAux2;
sql:= ' SELECT'+
' D.Number, D.PrintDate, D.TotDuty, D.TotTax,'+
' M.Entry, M.Source'+
' FROM DailyStatements D'+
' LEFT JOIN ABI_STMT_MSG M ON (D.Number = M.Number)'+
' WHERE M.Entry <> '+QuotedStr('');
if filter = '' then
sql:= sql +
' AND D.Number='+QuotedStr(number)+
' ORDER BY D.Number'
else
sql:= sql + filter + ' ORDER BY D.Number';
dressqueries(QryAux3,sql,Datafiles.dbBROKERAGE);
DsrAux3.DataSet:=QryAux3;
Datafiles.frxDBDataset3.DataSource := DsrAux3;
RptFr3 := Datafiles.StrPath+Datafiles.dbbasico.DLLCommon_Path + 'reports\DailyStatement.fr3';
MyReport := Datafiles.Report;
MyReport.LoadFromFile(RptFr3);
MyReport.PreviewOptions.Modal := true;
MyReport.PreviewOptions.AllowEdit := false;
MyReport.PreviewOptions.OutlineVisible := false;
MyReport.PrintOptions.ShowDialog := false;
MyReport.ReportOptions.Compressed := true;
frmPreviewer := TfrmPreviewer.Create(nil);
frmPreviewer.form_name:='Daily Statement';
MyReport.PrepareReport;
MyReport.Preview := frmPreviewer.Preview;
frmPreviewer.ShowModal;
end;
Me lei la ayuda de Fast Report 4 y solo tiene explicado un informe con Group Header y un Master Data al estilo de una factura.