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

📄 unit432.~pas

📁 Delphi6分布式开发例程12 )
💻 ~PAS
字号:
unit Unit432;

interface

uses
  Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
  DBClient, Project12_3_TLB, StdVcl, Db, DBTables, Provider,Variants;

type
  TTest123Server = class(TRemoteDataModule, ITest123Server)
    Table1: TTable;
    DataSetProvider1: TDataSetProvider;
    Database1: TDatabase;
  private
    { Private declarations }
  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
    procedure ApplyUpdates(CustVar: OleVariant); safecall;
  public
    { Public declarations }
  end;

implementation

{$R *.DFM}

class procedure TTest123Server.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
  if Register then
  begin
    inherited UpdateRegistry(Register, ClassID, ProgID);
    EnableSocketTransport(ClassID);
    EnableWebTransport(ClassID);
  end else
  begin
    DisableSocketTransport(ClassID);
    DisableWebTransport(ClassID);
    inherited UpdateRegistry(Register, ClassID, ProgID);
  end;
end;

procedure TTest123Server.ApplyUpdates(CustVar: OleVariant);
var
  ErrCount: Integer;
begin
  Database1.StartTransaction;		//启动Transcation
  try
    if not VarIsNull(CustVar) then	// 判断前台传过来的DataSet是否有变动
    begin				// 如果有,则把变动部分写入数据库中
      CustVar := DataSetProvider1.ApplyUpdates(CustVar, 0, ErrCount);
      if ErrCount > 0 then		//判断数据库写入操作是否有错误
        SysUtils.Abort;			//如果有,则中断
    end;
    Database1.Commit;			//确认刚才的写入操作
  except
    Database1.Rollback			//恢复到写入前的状态
  end;
end;

//在这个程序一开始,就先创建此程序对应的Type Library控件
initialization
  TComponentFactory.Create(ComServer, TTest123Server,
    Class_Test123Server, ciMultiInstance, tmApartment);
end.

⌨️ 快捷键说明

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