📄 twodetrp.pas
字号:
unit Twodetrp;
{
This Sample report illistrates how you can display two different
detail tables on the same SubDataDetail Band. This is done by using
the bands OnDataStart and OnDataSkip Events. Two Queries on the
same table were used in this example to give us two tables with the
same master source. In the OnDataSkip Event you manually skip through
each table, checking each time to see whether both tables are finished
( and if so setting the DataIsFinished property to true ).
The labels on the SubDataDetail band use the LabelPrintWhen Event to
suppress the printing of the label from one table if it has finished
but the other table has not.
The OnDataStart event consists of simply moving the tables to the
first record and checking whether the tables contain any records.
}
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DBTables, DB, StdCtrls,
sctctrl, Sctrep, Sctvar, Buttons, Sctbtn, AcePage;
type
TTwoDetForm = class(TForm)
CustomerSource: TDataSource;
CustomerTable: TTable;
DataSource2: TDataSource;
Query1: TQuery;
CustomerTableCustNo: TFloatField;
CustomerTableCompany: TStringField;
CustomerTableAddr1: TStringField;
CustomerTableAddr2: TStringField;
CustomerTableCity: TStringField;
CustomerTableState: TStringField;
CustomerTableZip: TStringField;
CustomerTableCountry: TStringField;
CustomerTablePhone: TStringField;
CustomerTableFAX: TStringField;
CustomerTableTaxRate: TFloatField;
CustomerTableContact: TStringField;
CustomerTableLastInvoiceDate: TDateTimeField;
DataSource3: TDataSource;
Query2: TQuery;
ReportHeaderBand: TSctBand;
ReportHeaderBandlevel: TSctLevel;
PageHeaderBand: TSctBand;
PageHeaderBandlevel: TSctLevel;
DetailBand: TSctBand;
DetailBandlevel: TSctLevel;
PageFooterBand: TSctBand;
PageFooterBandlevel: TSctLevel;
ReportFooterBand: TSctBand;
ReportFooterBandlevel: TSctLevel;
ReportPage: TSctGrouppage;
SctReport1: TSctReport;
svarDateTime: TSctDateTimeVar;
svarPage: TSctPageVar;
DataSourceGuide: TSctDataSourceGuide;
DataSourceGuide1: TSctDataSourceGuide;
DataSourceGuide2: TSctDataSourceGuide;
customertableCUSTNO1: TSctdbvar;
customertableCOMPANY1: TSctdbvar;
customertableADDR11: TSctdbvar;
customertableADDR21: TSctdbvar;
customertableCITY1: TSctdbvar;
customertableSTATE1: TSctdbvar;
customertableZIP1: TSctdbvar;
customertableCOUNTRY1: TSctdbvar;
customertablePHONE1: TSctdbvar;
customertableFAX1: TSctdbvar;
customertableTAXRATE1: TSctdbvar;
customertableCONTACT1: TSctdbvar;
customertableLASTINVOICEDATE1: TSctdbvar;
query1ORDERNO: TSctdbvar;
query1CUSTNO: TSctdbvar;
query1SALEDATE: TSctdbvar;
query1SHIPDATE: TSctdbvar;
query1EMPNO: TSctdbvar;
query1SHIPTOCONTACT: TSctdbvar;
query1SHIPTOADDR1: TSctdbvar;
query1SHIPTOADDR2: TSctdbvar;
query1SHIPTOCITY: TSctdbvar;
query1SHIPTOSTATE: TSctdbvar;
query1SHIPTOZIP: TSctdbvar;
query1SHIPTOCOUNTRY: TSctdbvar;
query1SHIPTOPHONE: TSctdbvar;
query1SHIPVIA: TSctdbvar;
query1PO: TSctdbvar;
query1TERMS: TSctdbvar;
query1PAYMENTMETHOD: TSctdbvar;
query1ITEMSTOTAL: TSctdbvar;
query1TAXRATE: TSctdbvar;
query1FREIGHT: TSctdbvar;
query1AMOUNTPAID: TSctdbvar;
query2ORDERNO: TSctdbvar;
query2CUSTNO: TSctdbvar;
query2SALEDATE: TSctdbvar;
query2SHIPDATE: TSctdbvar;
query2EMPNO: TSctdbvar;
query2SHIPTOCONTACT: TSctdbvar;
query2SHIPTOADDR1: TSctdbvar;
query2SHIPTOADDR2: TSctdbvar;
query2SHIPTOCITY: TSctdbvar;
query2SHIPTOSTATE: TSctdbvar;
query2SHIPTOZIP: TSctdbvar;
query2SHIPTOCOUNTRY: TSctdbvar;
query2SHIPTOPHONE: TSctdbvar;
query2SHIPVIA: TSctdbvar;
query2PO: TSctdbvar;
query2TERMS: TSctdbvar;
query2PAYMENTMETHOD: TSctdbvar;
query2ITEMSTOTAL: TSctdbvar;
query2TAXRATE: TSctdbvar;
query2FREIGHT: TSctdbvar;
query2AMOUNTPAID: TSctdbvar;
SubDataDetailBand: TSctSubDataBand;
SubDataDetailBandlevel: TSctLevel;
TSctvarlabel: TSctvarlabel;
TSctvarlabel1: TSctvarlabel;
Sctvarlabel1: TSctvarlabel;
Sctvarlabel2: TSctvarlabel;
SctReportButton1: TSctReportButton;
SctTextLabel1: TSctTextLabel;
Sctvarlabel3: TSctvarlabel;
SctTextLabel2: TSctTextLabel;
Sctvarlabel4: TSctvarlabel;
SctTextLabel3: TSctTextLabel;
SctTextLabel4: TSctTextLabel;
SctTextLabel5: TSctTextLabel;
SctTextLabel6: TSctTextLabel;
Sctvarlabel5: TSctvarlabel;
SctTextLabel7: TSctTextLabel;
Sctvarlabel6: TSctvarlabel;
SctTextLabel8: TSctTextLabel;
Button1: TButton;
procedure SubDataDetailBandDataSkip(Sender: TObject);
procedure Sctvarlabel1LabelPrintWhen(lb: TSctLabel; var Result: Boolean);
procedure Sctvarlabel2LabelPrintWhen(lb: TSctLabel; var Result: Boolean);
procedure SubDataDetailBandDataStart(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
TwoDetForm: TTwoDetForm;
implementation
{$R *.DFM}
procedure TTwoDetForm.SubDataDetailBandDataSkip(Sender: TObject);
begin
Query1.Next;
Query2.Next;
if (Query1.EOF) and (Query2.EOF) then SubDataDetailBand.DataIsFinished := True;
end;
procedure TTwoDetForm.Sctvarlabel1LabelPrintWhen(lb: TSctLabel; var Result: Boolean);
begin
result := not Query1.EOF;
end;
procedure TTwoDetForm.Sctvarlabel2LabelPrintWhen(lb: TSctLabel; var Result: Boolean);
begin
result := not Query2.EOF;
end;
procedure TTwoDetForm.SubDataDetailBandDataStart(Sender: TObject);
begin
Query1.First;
Query2.First;
if (Query1.EOF) and (Query2.EOF) then SubDataDetailBand.DataIsFinished := True;
end;
procedure TTwoDetForm.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TTwoDetForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -