home *** CD-ROM | disk | FTP | other *** search
- unit Custord;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, DBTables, DB, DBCtrls, StdCtrls, ExtCtrls, Grids, DBGrids, Buttons;
-
- type
- TBrCustOrdForm = class(TForm)
- CtrlsPanel: TPanel;
- Navigator: TDBNavigator;
- Cust: TTable;
- CustSource: TDataSource;
- Orders: TTable;
- OrdersSource: TDataSource;
- CustQuery: TQuery;
- CustQueryCustNo: TFloatField;
- CustQueryCompany: TStringField;
- BtnPanel: TPanel;
- EditBtn: TButton;
- CloseBtn: TButton;
- OrdersOrderNo: TFloatField;
- OrdersCustNo: TFloatField;
- OrdersItemsTotal: TCurrencyField;
- OrdersTaxRate: TFloatField;
- OrdersFreight: TCurrencyField;
- OrdersAmountPaid: TCurrencyField;
- OrdersAmountDue: TCurrencyField;
- CustQueryPhone: TStringField;
- ActivateBtn: TSpeedButton;
- CustCustNo: TFloatField;
- CustCompany: TStringField;
- CustPhone: TStringField;
- DefineBtn: TSpeedButton;
- CustLastInvoiceDate: TDateTimeField;
- CustQueryLastInvoiceDate: TDateTimeField;
- OrdersSaleDate: TDateTimeField;
- OrdersShipDate: TDateTimeField;
- CustPanel: TPanel;
- CustGrid: TDBGrid;
- OrdersPanel: TPanel;
- OrdersGrid: TDBGrid;
- procedure OrdersCalcFields(DataSet: TDataSet);
- procedure CustGridEnter(Sender: TObject);
- procedure SetQuery(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure ActivateQuery(Sender: TObject);
- procedure EditBtnClick(Sender: TObject);
- procedure CloseBtnClick(Sender: TObject);
- procedure OrdersGridEnter(Sender: TObject);
- procedure CustBeforeOpen(DataSet: TDataset);
- private
- FActiveSource: TDataSource;
- FCustNo: Double;
- FOrderNo: Double;
- function GetCustNo: Double;
- function GetOrderNo: Double;
- procedure SetActiveSource(DataSource: TDataSource);
- procedure SetCustNo(NewCustNo: Double);
- procedure SetOrderNo(NewOrderNo: Double);
- property ActiveSource: TDataSource read FActiveSource write SetActiveSource;
- public
- property CustNo: Double read GetCustNo write SetCustNo;
- property OrderNo: Double read GetOrderNo write SetOrderNo;
- end;
-
- var
- BrCustOrdForm: TBrCustOrdForm;
-
- implementation
-
- uses CustQry, EdCust, EdOrders, Main;
-
- {$R *.DFM}
-
- procedure TBrCustOrdForm.FormCreate(Sender: TObject);
- begin
- CustQuery.Prepare;
- Cust.Open;
- end;
-
- { retrieve from active customer table or query--whichever is active }
- function TBrCustOrdForm.GetCustNo: Double;
- begin
- Result := CustSource.Dataset.Fields[0].AsFloat;
- end;
-
- procedure TBrCustOrdForm.SetCustNo(NewCustNo: Double);
- begin
- CustSource.Dataset := Cust;
- Cust.FindKey([NewCustNo]);
- end;
-
- function TBrCustOrdForm.GetOrderNo: Double;
- begin
- Result := OrdersOrderNo.Value;
- end;
-
- procedure TBrCustOrdForm.SetOrderNo(NewOrderNo: Double);
- begin
- Orders.FindKey([NewOrderNo]);
- end;
-
- procedure TBrCustOrdForm.SetActiveSource(DataSource: TDataSource);
- begin
- FActiveSource := DataSource;
- Navigator.DataSource := FActiveSource;
- end;
-
- procedure TBrCustOrdForm.OrdersCalcFields(DataSet: TDataSet);
- begin
- OrdersAmountDue.Value := OrdersItemsTotal.Value +
- OrdersItemsTotal.Value * OrdersTaxRate.Value / 100 +
- OrdersFreight.Value + - OrdersAmountPaid.Value;
- end;
-
- procedure TBrCustOrdForm.CustGridEnter(Sender: TObject);
- begin
- ActiveSource := CustSource;
- CustGrid.Options := CustGrid.Options + [dgAlwaysShowSelection];
- OrdersGrid.Options := OrdersGrid.Options - [dgAlwaysShowSelection];
- end;
-
- procedure TBrCustOrdForm.OrdersGridEnter(Sender: TObject);
- begin
- ActiveSource := OrdersSource;
- OrdersGrid.Options := OrdersGrid.Options + [dgAlwaysShowSelection];
- CustGrid.Options := CustGrid.Options - [dgAlwaysShowSelection];
- end;
-
- procedure TBrCustOrdForm.SetQuery(Sender: TObject);
- begin
- with CustQueryDlg do
- begin
- MsgLab.Caption := 'Customers with LastInvoiceDate ranging:';
- if FromDate = 0 then FromDate := Now;
- if ToDate = 0 then ToDate := Now;
- ShowModal;
- end;
- end;
-
- procedure TBrCustOrdForm.ActivateQuery(Sender: TObject);
- begin
- if not ActivateBtn.Down then
- CustSource.Dataset := Cust
- else
- try
- CustQuery.Close;
- CustQuery.Params[0].AsDatetime := CustQueryDlg.FromDate;
- CustQuery.Params[1].AsDatetime := CustQueryDlg.ToDate;
- CustQuery.Open;
- CustSource.Dataset := CustQuery;
- except
- CustSource.Dataset := Cust;
- ActivateBtn.Down := false;
- ShowMessage('Invalid date range specified');
- end;
- end;
-
- procedure TBrCustOrdForm.EditBtnClick(Sender: TObject);
- begin
- if ActiveSource = CustSource then
- EdCustForm.Edit(ActiveSource.Dataset.Fields[0].AsFloat)
- else
- OrderForm.Edit(OrderNo);
- end;
-
- procedure TBrCustOrdForm.CloseBtnClick(Sender: TObject);
- begin
- Close;
- end;
-
- procedure TBrCustOrdForm.CustBeforeOpen(DataSet: TDataset);
- begin
- Orders.Open;
- end;
-
- end.
-