home *** CD-ROM | disk | FTP | other *** search
- { This demonstrates the use of calculated fields and
- linked tables. Note that the creation order of table
- components is important. In this demo, each table opens and
- closes the tables it depends on in its BeforeOpen and AfterClose events
- (respectively).}
- unit Main;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, DBTables, DB, Grids, DBGrids;
-
- type
- TForm1 = class(TForm)
- OrdersGrid: TDBGrid;
- ItemsGrid: TDBGrid;
- Orders: TTable;
- Items: TTable;
- OrdersSource: TDataSource;
- ItemsSource: TDataSource;
- OrdersOrderNo: TFloatField;
- OrdersCustNo: TFloatField;
- OrdersAmountPaid: TCurrencyField;
- OrdersCompany: TStringField;
- ItemsItemNo: TFloatField;
- ItemsOrderNo: TFloatField;
- ItemsPartNo: TFloatField;
- ItemsQty: TIntegerField;
- ItemsDiscount: TFloatField;
- ItemsExtPrice: TCurrencyField;
- Cust: TTable;
- CustCustNo: TFloatField;
- CustCompany: TStringField;
- OrdersSaleDate: TDateTimeField;
- ItemsSellPrice: TCurrencyField;
- ItemsDescription: TStringField;
- Parts: TTable;
- PartsPartNo: TFloatField;
- PartsVendorNo: TFloatField;
- PartsDescription: TStringField;
- PartsOnHand: TFloatField;
- PartsOnOrder: TFloatField;
- PartsCost: TCurrencyField;
- PartsListPrice: TCurrencyField;
- procedure OrdersCalcFields(DataSet: TDataSet);
- procedure ItemsCalcFields(DataSet: TDataSet);
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure OrdersAfterClose(DataSet: TDataset);
- procedure OrdersBeforeOpen(DataSet: TDataset);
- procedure ItemsAfterClose(DataSet: TDataset);
- procedure ItemsBeforeOpen(DataSet: TDataset);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- { This is called whenever an order's row changes or
- a new item is fetched into local buffers. It is only
- valid to change a column in this table if its
- Calculated property is True. }
- procedure TForm1.OrdersCalcFields(DataSet: TDataSet);
- begin
- if Cust.FindKey([OrdersCustNo]) then
- OrdersCompany.Value := CustCompany.Value;
- end;
-
- { This is called whenever an item's row changes or
- a new item is fetched into local buffers. It is only
- valid to change a column in this table if its
- Calculated property is True. }
- procedure TForm1.ItemsCalcFields(DataSet: TDataSet);
- begin
- if Parts.FindKey ([ItemsPartNo]) then
- begin
- ItemsExtPrice.Value := ItemsQty.Value *
- PartsListPrice.Value * (100 - ItemsDiscount.Value) / 100;
- ItemsSellPrice.Value := PartsListPrice.Value;
- ItemsDescription.Value := PartsDescription.Value;
- end;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- Orders.Open;
- end;
-
- procedure TForm1.FormDestroy(Sender: TObject);
- begin
- Orders.Close;
- end;
-
- procedure TForm1.OrdersAfterClose(DataSet: TDataset);
- begin
- Cust.Close;
- Items.Close;
- end;
-
- procedure TForm1.OrdersBeforeOpen(DataSet: TDataset);
- begin
- Cust.Open;
- Items.Open;
- end;
-
- procedure TForm1.ItemsAfterClose(DataSet: TDataset);
- begin
- Parts.Close;
- end;
-
- procedure TForm1.ItemsBeforeOpen(DataSet: TDataset);
- begin
- Parts.Open;
- end;
-
- end.
-