home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 February / DPPCPRO0299.ISO / February / Delphi / Install / DATA.Z / DMCSDEMO.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-06-11  |  4.4 KB  |  126 lines

  1. unit DmCSDemo;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   DBTables, DB;
  8.  
  9. type
  10.   TDmEmployee = class(TDataModule)
  11.     SalesTable: TTable;
  12.     SalesSource: TDataSource;
  13.     CustomerTable: TTable;
  14.     CustomerSource: TDataSource;
  15.     ShipOrderProc: TStoredProc;
  16.     EmployeeDatabase: TDatabase;
  17.     EmployeeSource: TDataSource;
  18.     EmployeeTable: TTable;
  19.     EmployeeTableEMP_NO: TSmallintField;
  20.     EmployeeTableFIRST_NAME: TStringField;
  21.     EmployeeTableLAST_NAME: TStringField;
  22.     EmployeeTablePHONE_EXT: TStringField;
  23.     EmployeeTableHIRE_DATE: TDateTimeField;
  24.     EmployeeTableDEPT_NO: TStringField;
  25.     EmployeeTableJOB_CODE: TStringField;
  26.     EmployeeTableJOB_GRADE: TSmallintField;
  27.     EmployeeTableJOB_COUNTRY: TStringField;
  28.     EmployeeTableSALARY: TFloatField;
  29.     EmployeeTableFULL_NAME: TStringField;
  30.     DeleteEmployeeProc: TStoredProc;
  31.     SalaryHistoryTable: TTable;
  32.     SalaryHistorySource: TDataSource;
  33.     SalaryHistoryTableCHANGE_DATE: TDateTimeField;
  34.     SalaryHistoryTableUPDATER_ID: TStringField;
  35.     SalaryHistoryTableOLD_SALARY: TFloatField;
  36.     SalaryHistoryTablePERCENT_CHANGE: TFloatField;
  37.     SalaryHistoryTableNEW_SALARY: TFloatField;
  38.     CustomerTableCUST_NO: TIntegerField;
  39.     CustomerTableCUSTOMER: TStringField;
  40.     CustomerTableCONTACT_FIRST: TStringField;
  41.     CustomerTableCONTACT_LAST: TStringField;
  42.     CustomerTablePHONE_NO: TStringField;
  43.     CustomerTableADDRESS_LINE1: TStringField;
  44.     CustomerTableADDRESS_LINE2: TStringField;
  45.     CustomerTableCITY: TStringField;
  46.     CustomerTableSTATE_PROVINCE: TStringField;
  47.     CustomerTableCOUNTRY: TStringField;
  48.     CustomerTablePOSTAL_CODE: TStringField;
  49.     CustomerTableON_HOLD: TStringField;
  50.     SalesTablePO_NUMBER: TStringField;
  51.     SalesTableCUST_NO: TIntegerField;
  52.     SalesTableSALES_REP: TSmallintField;
  53.     SalesTableORDER_STATUS: TStringField;
  54.     SalesTableORDER_DATE: TDateTimeField;
  55.     SalesTableSHIP_DATE: TDateTimeField;
  56.     SalesTableDATE_NEEDED: TDateTimeField;
  57.     SalesTablePAID: TStringField;
  58.     SalesTableQTY_ORDERED: TIntegerField;
  59.     SalesTableTOTAL_VALUE: TIntegerField;
  60.     SalesTableDISCOUNT: TFloatField;
  61.     SalesTableITEM_TYPE: TStringField;
  62.     SalesTableAGED: TFloatField;
  63.     EmployeeLookup: TTable;
  64.     SmallintField1: TSmallintField;
  65.     StringField1: TStringField;
  66.     StringField2: TStringField;
  67.     StringField3: TStringField;
  68.     DateTimeField1: TDateTimeField;
  69.     StringField4: TStringField;
  70.     StringField5: TStringField;
  71.     SmallintField2: TSmallintField;
  72.     StringField6: TStringField;
  73.     FloatField1: TFloatField;
  74.     StringField7: TStringField;
  75.     SalaryHistoryTableEMP_NO: TSmallintField;
  76.     SalaryHistoryTableEMPLOYEE: TStringField;
  77.     procedure EmployeeTableBeforeDelete(DataSet: TDataSet);
  78.     procedure EmployeeTableAfterPost(DataSet: TDataSet);
  79.     procedure DmEmployeeCreate(Sender: TObject);
  80.   private
  81.     { Private declarations }
  82.   public
  83.     { Public declarations }
  84.   end;
  85.  
  86. var
  87.   DmEmployee: TDmEmployee;
  88.  
  89. implementation
  90.  
  91. {$R *.DFM}
  92.  
  93. { Note: Business rules go in the data model.  Here is an example, used by
  94.   the transaction editing demo.  Deletes for the employee table are done
  95.   with a stored procedure rather than the normal BDE record delete
  96.   mechanism, so an audit trail could be provided, etc... }
  97.  
  98. { The database, EmployeeDatabase, is the InterBase example EMPLOYEE.GDB database
  99.   accessed thru the BDE alias IBLOCAL.  This database contains examples
  100.   of stored procedures, triggers, check constraints, views, etc., many of
  101.   which are used within this demo project. }
  102.  
  103. procedure TDmEmployee.EmployeeTableBeforeDelete(DataSet: TDataSet);
  104. begin
  105.   { Assign the current employee's id to the stored procedure's parameter }
  106.   DeleteEmployeeProc.Params.ParamValues['EMP_NUM'] := EmployeeTable['EMP_NO'];
  107.   DeleteEmployeeProc.ExecProc;          { Trigger the stored proc }
  108.   EmployeeTable.Refresh;                { Refresh the data }
  109.   { Block the EmployeeTable delete since the stored procedure did the work }
  110.   Abort;
  111. end;
  112.  
  113. procedure TDmEmployee.EmployeeTableAfterPost(DataSet: TDataSet);
  114. begin
  115.   { A change in an employee salary triggers a change in the salary history,
  116.     so if that table is open, it needs to be refreshed now }
  117.   with SalaryHistoryTable do if Active then Refresh;
  118. end;
  119.  
  120. procedure TDmEmployee.DmEmployeeCreate(Sender: TObject);
  121. begin
  122.   EmployeeDatabase.Open;
  123. end;
  124.  
  125. end.
  126.