📄 uthreaddata.pas
字号:
unit UThreadData;
//This Datamodule should not be created automatically. See project Options
//We need a seeion to make BDE thread safe.
//Remember this is just a demo... I wouldn't use bde for mutithreading, anyway
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
UExcelAdapter, XLSAdapter, UCustomFlexCelReport, UFlexcelReport, Db,
DBTables;
type
TThreadData = class(TDataModule)
FlxRep: TFlexCelReport;
XLSAdapter: TXLSAdapter;
Items: TTable;
ItemsItemNo: TFloatField;
ItemsOrderNo: TFloatField;
ItemsPartNo: TFloatField;
ItemsDescription: TStringField;
ItemsSellPrice: TCurrencyField;
ItemsQty: TIntegerField;
ItemsDiscount: TFloatField;
ItemsExtPrice: TCurrencyField;
ItemsDiscountPc: TFloatField;
Cust: TTable;
CustCustNo: TFloatField;
CustCompany: TStringField;
CustPhone: TStringField;
CustLastInvoiceDate: TDateTimeField;
CustAddr1: TStringField;
CustAddr2: TStringField;
CustCity: TStringField;
CustState: TStringField;
CustZip: TStringField;
CustCountry: TStringField;
CustFAX: TStringField;
CustTaxRate: TFloatField;
CustContact: TStringField;
CustTotAddr1: TStringField;
CustTotAddr2: TStringField;
Orders: TTable;
OrdersOrderNo: TFloatField;
OrdersCustNo: TFloatField;
OrdersSaleDate: TDateTimeField;
OrdersShipDate: TDateTimeField;
OrdersItemsTotal: TCurrencyField;
OrdersTaxRate: TFloatField;
OrdersFreight: TCurrencyField;
OrdersAmountPaid: TCurrencyField;
OrdersAmountDue: TCurrencyField;
OrdersEmpNo: TIntegerField;
OrdersShipToContact: TStringField;
OrdersShipToAddr1: TStringField;
OrdersShipToAddr2: TStringField;
OrdersShipToCity: TStringField;
OrdersShipToState: TStringField;
OrdersShipToZip: TStringField;
OrdersShipToCountry: TStringField;
OrdersShipToPhone: TStringField;
OrdersSalesPerson: TStringField;
OrdersShipVIA: TStringField;
OrdersPO: TStringField;
OrdersTerms: TStringField;
OrdersPaymentMethod: TStringField;
DsOrders: TDataSource;
DsCust: TDataSource;
Emps: TTable;
EmpsEmpNo: TIntegerField;
EmpsFullName: TStringField;
EmpsLastName: TStringField;
EmpsFirstName: TStringField;
EmpsPhoneExt: TStringField;
EmpsHireDate: TDateTimeField;
EmpsSalary: TFloatField;
Parts: TTable;
PartsPartNo: TFloatField;
PartsDescription: TStringField;
PartsVendorNo: TFloatField;
PartsOnHand: TFloatField;
PartsOnOrder: TFloatField;
PartsBackOrd: TBooleanField;
PartsCost: TCurrencyField;
PartsListPrice: TCurrencyField;
Session1: TSession;
procedure ItemsCalcFields(DataSet: TDataSet);
procedure CustCalcFields(DataSet: TDataSet);
private
function GetCurrent_Date: variant;
{ Private declarations }
public
{ Public declarations }
published
property Current_Date: variant read GetCurrent_Date;
end;
implementation
{$R *.DFM}
{ TThreadData }
function TThreadData.GetCurrent_Date: variant;
begin
Result:=now;
end;
procedure TThreadData.ItemsCalcFields(DataSet: TDataSet);
begin
ItemsExtPrice.Value := ItemsQty.Value *
ItemsSellPrice.Value * (100 - ItemsDiscount.Value) / 100;
ItemsDiscountPc.Value:=ItemsDiscount.Value / 100;
end;
procedure TThreadData.CustCalcFields(DataSet: TDataSet);
begin
CustTotAddr1.Value:= CustAddr1.Value+' '+ CustAddr2.Value;
CustTotAddr2.Value:= CustCity.Value+' '+ CustState.Value + ' '+ CustZip.Value;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -