⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 appsrdm.pas

📁 source code for the Marco Cantu s book Delphi 2009 Handbook
💻 PAS
字号:
unit AppSRDM;

interface

uses
  Windows, Messages, SysUtils, Classes, DataBkr, DBClient, DB,
  Provider, DBTables, Variants, SqlExpr, FMTBcd, WideStrings,
  DBXInterbase;

type
  TAppServerPlus = class(TRemoteDataModule)
    DataSourceDept: TDataSource;
    ProviderDepartments: TDataSetProvider;
    ProviderQuery: TDataSetProvider;
    SQLMonitor1: TSQLMonitor;
    SQLConnection1: TSQLConnection;
    SQLWithParams: TSQLDataSet;
    SQLDepartments: TSQLDataSet;
    SQLEmployees: TSQLDataSet;
    procedure RemoteDataModuleCreate(Sender: TObject);
    procedure ProviderQueryGetDataSetProperties(Sender: TObject;
      DataSet: TDataSet; out Properties: OleVariant);
    procedure ProviderDepartmentsUpdateData(Sender: TObject;
      DataSet: TCustomClientDataSet);
    procedure ProviderDepartmentsBeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
    procedure ProviderDepartmentsBeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
    procedure ProviderEmployeeBeforeUpdateRecord(Sender: TObject;
      SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
      UpdateKind: TUpdateKind; var Applied: Boolean);
    procedure ProviderEmployeeAfterApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    procedure ProviderEmployeeUpdateError(Sender: TObject;
      DataSet: TCustomClientDataSet; E: EUpdateError;
      UpdateKind: TUpdateKind; var Response: TResolverResponse);
  private
    { Private declarations }
  public
    procedure Login(const Name, Password: WideString);
  end;

implementation

uses AppSForm;

{$R *.DFM}

procedure TAppServerPlus.Login(const Name, Password: WideString);
begin
  if Password <> Name then
    raise Exception.Create ('Wrong name/password combination received');
  ProviderDepartments.Exported := True;
  ServerForm.Add ('Login:' + Name + '/' + Password);
end;

procedure TAppServerPlus.ProviderQueryGetDataSetProperties(Sender: TObject;
  DataSet: TDataSet; out Properties: OleVariant);
begin
  Properties := VarArrayCreate([0,1], varVariant);
  Properties[0] := VarArrayOf(['Time', Now, True]);
  Properties[1] := VarArrayOf(['Param', SQLWithParams.Params[0].AsString, False]);
end;

procedure TAppServerPlus.ProviderDepartmentsUpdateData(Sender: TObject;
  DataSet: TCustomClientDataSet);
begin
  ServerForm.Add ('ProviderCustomer.OnUpdateData');
end;

procedure TAppServerPlus.ProviderDepartmentsBeforeUpdateRecord(
  Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
begin
  ServerForm.Add ('ProviderCustomer.UpdateRecord');
end;

procedure TAppServerPlus.ProviderDepartmentsBeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  ServerForm.Add ('ProviderCustomer.BeforeGetRecords');
end;


procedure TAppServerPlus.ProviderEmployeeBeforeUpdateRecord(
  Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  UpdateKind: TUpdateKind; var Applied: Boolean);
begin
  ServerForm.Add ('fix hire date');
  DeltaDS.FieldByName('HIRE_DATE').NewValue := Now;
end;

procedure TAppServerPlus.ProviderEmployeeAfterApplyUpdates(Sender: TObject;
  var OwnerData: OleVariant);
begin
  ServerForm.Add ('after apply...');
end;

procedure TAppServerPlus.ProviderEmployeeUpdateError(Sender: TObject;
  DataSet: TCustomClientDataSet; E: EUpdateError; UpdateKind: TUpdateKind;
  var Response: TResolverResponse);
begin
  ServerForm.Add ('Error: ' + E.Message);
end;

procedure TAppServerPlus.RemoteDataModuleCreate(Sender: TObject);
begin
  ProviderDepartments.Exported := False;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -