utdmdelphi6adoserver.pas

来自「Delphi开发webservice的一套例子」· PAS 代码 · 共 100 行

PAS
100
字号
unit utdmDelphi6ADOServer;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComServ, ComObj, VCLCom, StdVcl, bdemts, DataBkr, DBClient,
  MtsRdm, Mtx, PDelphi6ADOServer_TLB, Provider, DB, ADODB;

type
  TDelphi6ADOServer = class(TMtsDataModule, IDelphi6ADOServer)
    adocDBDemos: TADOConnection;
    adodsEmployee: TADODataSet;
    dspEmployee: TDataSetProvider;
    cdsEmployee: TClientDataSet;
    procedure MtsDataModuleActivate(Sender: TObject);
    procedure MtsDataModuleDeactivate(Sender: TObject);
  private
    { Private declarations }
  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
    procedure QueryMyData(const sSQLCommand: WideString;
      var vData: OleVariant); safecall;
    procedure UpdateMyData(const sData: WideString; var lErrorCount: Integer);
      safecall;
  public
    { Public declarations }
  end;

var
  Delphi6ADOServer: TDelphi6ADOServer;

implementation

{$R *.DFM}

class procedure TDelphi6ADOServer.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 TDelphi6ADOServer.MtsDataModuleActivate(Sender: TObject);
begin
  Self.adocDBDemos.Connected := True;
end;

procedure TDelphi6ADOServer.MtsDataModuleDeactivate(Sender: TObject);
begin
  Self.adocDBDemos.Connected := False;
end;

procedure TDelphi6ADOServer.QueryMyData(const sSQLCommand: WideString;
  var vData: OleVariant);
begin
  Self.cdsEmployee.Active := False;
  Self.cdsEmployee.CommandText := sSQLCommand;
  try
    try
      Self.cdsEmployee.Active := True;
      vData := Self.cdsEmployee.XMLData;
    finally
      Self.cdsEmployee.Active := False;
    end;
    SetComplete;
  except
    on Exception do
      SetAbort;
  end;
end;

procedure TDelphi6ADOServer.UpdateMyData(const sData: WideString;
  var lErrorCount: Integer);
begin
  try
    Self.cdsEmployee.Active := False;
    Self.cdsEmployee.XMLData := sData;
    lErrorCount := Self.cdsEmployee.ApplyUpdates(0);
    SetComplete;
  except
    on Exception do
      SetAbort;
  end;
end;

initialization
  TComponentFactory.Create(ComServer, TDelphi6ADOServer,
    Class_Delphi6ADOServer, ciMultiInstance, tmApartment);
end.

⌨️ 快捷键说明

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