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

📄 hmprovider.pas

📁 Delphi三层原代码掩饰及补丁
💻 PAS
字号:
unit hmProvider;

interface

uses
  Windows, Messages, SysUtils, Classes, DB, DBClient, HMADQ, Provider,
  Variants, HMADN, AdoDB, hmStatusIntf;

type

  TUpdateTableState = (utInsert, utDelete, utUpdate);
  TOnUpdateField = procedure(Sender: TObject; SField, DField: TField; State: TUpdateTableState) of object;

  THMQueryProvider = class(TDataSetProvider)
  private
    FQuery: THMADQ;
    FComment: string;
    FKeyField: string;
    FOnUpdateField: TOnUpdateField;
    FOpenOnec: Boolean;
    function GetActive: Boolean;
    procedure SetActive(const Value: Boolean);
    procedure SetConnection(const Value: TADOConnection);
    function GetConnection: TADOConnection;
    function GetSQL: Tstrings;
    procedure SetSQL(const Value: Tstrings);
    procedure SetComment(const Value: string);
    procedure SetKeyField(const Value: string);
    procedure SetOnUpdateField(const Value: TOnUpdateField);
    procedure SetOpenOnec(const Value: Boolean);
    function GetCheckSql: IStatus;
    procedure SetCheckSql(const Value: IStatus);
  protected
    procedure ShowDebug(Msg: string);
    procedure DoAfterApplyUpdates(var OwnerData: OleVariant); override;
    procedure DoBeforeApplyUpdates(var OwnerData: OleVariant); override;
    procedure DoAfterExecute(var OwnerData: OleVariant); override;
    procedure DoBeforeExecute(const CommandText: WideString; var Params, OwnerData: OleVariant); override;
    procedure DoAfterGetParams(var OwnerData: OleVariant); override;
    procedure DoBeforeGetParams(var OwnerData: OleVariant); override;
    procedure DoAfterGetRecords(var OwnerData: OleVariant); override;
    procedure DoBeforeGetRecords(Count: Integer; Options: Integer; const CommandText: WideString; var Params, OwnerData: OleVariant); override;
    procedure DoAfterRowRequest(var OwnerData: OleVariant); override;
    procedure DoBeforeRowRequest(var OwnerData: OleVariant); override;
    procedure DoGetTableName(DataSet: TDataSet; var TableName: string); override;
    procedure DoGetProviderAttributes(DataSet: TDataSet; List: TList); override;
    procedure DoOnGetData(var Data: OleVariant);
    procedure DoOnUpdateData(Delta: TPacketDataSet);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Close;
    procedure Open(Cmd: WideString);
    function DataRequest(Input: OleVariant): OleVariant; override;
    procedure DoOnUpdateField(SField: TField; DField: TField; State: TUpdateTableState);
    property Query: THMADQ read FQuery;
  published
    property Active: Boolean read GetActive write SetActive;
    property Connection: TADOConnection read GetConnection write SetConnection;
    property CheckSql: IStatus read GetCheckSql write SetCheckSql;
    property SQL: Tstrings read GetSQL write SetSQL;
    property Comment: string read FComment write SetComment;
    property KeyField: string read FKeyField write SetKeyField;
    property OpenOnec: Boolean read FOpenOnec write SetOpenOnec;
    property OnUpdateField: TOnUpdateField read FOnUpdateField write SetOnUpdateField;
  end;

implementation

{ THMQueryProvider }

procedure THMQueryProvider.Close;
begin
  FQuery.Close;
end;

function THMQueryProvider.GetActive: Boolean;
begin
  Result := FQuery.Active;
end;

procedure THMQueryProvider.Open(Cmd: WideString);
begin
  FQuery.Open(Cmd);
end;

procedure THMQueryProvider.SetActive(const Value: Boolean);
begin
  FQuery.Active := Value;
end;

constructor THMQueryProvider.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FQuery := THMADQ.Create(Self);
  FQuery.Name := 'Query';
  Self.DataSet := FQuery;
  FComment := '';
  FOpenOnec := True;
end;

destructor THMQueryProvider.Destroy;
begin
  FQuery.Free;
  inherited Destroy;
end;

procedure THMQueryProvider.SetConnection(const Value: TADOConnection);
begin
  FQuery.Connection := Value;
end;

function THMQueryProvider.GetConnection: TADOConnection;
begin
  Result := FQuery.Connection;
end;

function THMQueryProvider.GetSQL: Tstrings;
begin
  Result := FQuery.SQL;
end;

procedure THMQueryProvider.SetSQL(const Value: Tstrings);
begin
  FQuery.SQL.Assign(Value);
end;

procedure THMQueryProvider.ShowDebug(Msg: string);
begin
(*  if Assigned(FQuery.CheckSql) then
    if FQuery.CheckSql.CheckSQL then
      FQuery.CheckSql.AddComment('<DSP - ' + Self.Name + '>:' + Msg);*)
end;

procedure THMQueryProvider.DoAfterApplyUpdates(var OwnerData: OleVariant);
begin
  ShowDebug('AfterApplyUpdates');
  inherited;
end;

procedure THMQueryProvider.DoAfterExecute(var OwnerData: OleVariant);
begin
  ShowDebug('AfterExecute');
  inherited;
end;

procedure THMQueryProvider.DoAfterGetParams(var OwnerData: OleVariant);
begin
  ShowDebug('AfterGetParams');
  inherited;
end;

procedure THMQueryProvider.DoAfterGetRecords(var OwnerData: OleVariant);
begin
  ShowDebug('AfterGetRecords');
  inherited;
end;

procedure THMQueryProvider.DoAfterRowRequest(var OwnerData: OleVariant);
begin
  ShowDebug('AfterRowRequest');
  inherited;
end;

procedure THMQueryProvider.DoBeforeApplyUpdates(var OwnerData: OleVariant);
begin
  ShowDebug('BeforeApplyUpdates');
  inherited;
end;

procedure THMQueryProvider.DoBeforeExecute(const CommandText: WideString;
  var Params, OwnerData: OleVariant);
begin
  ShowDebug('BeforeExecute');
  inherited;
end;

procedure THMQueryProvider.DoBeforeGetParams(var OwnerData: OleVariant);
begin
  ShowDebug('BeforeGetParams');
  inherited;
end;

procedure THMQueryProvider.DoBeforeGetRecords(Count, Options: Integer;
  const CommandText: WideString; var Params, OwnerData: OleVariant);
begin
  ShowDebug('BeforeGetRecords');
  if (FOpenOnec) and (FQuery.SQL.Count > 0) then
    if FQuery.Active then
      FQuery.Requery
    else
      FQuery.Open;
  inherited;
end;

procedure THMQueryProvider.DoBeforeRowRequest(var OwnerData: OleVariant);
begin
  ShowDebug('BeforeRowRequest');
  inherited;
end;

procedure THMQueryProvider.DoGetProviderAttributes(DataSet: TDataSet;
  List: TList);
begin
  ShowDebug('GetProviderAttributes');
  inherited;
end;

procedure THMQueryProvider.DoGetTableName(DataSet: TDataSet;
  var TableName: string);
begin
  ShowDebug('GetTableName');
  inherited;
end;

procedure THMQueryProvider.DoOnGetData(var Data: OleVariant);
begin
  ShowDebug('GetTableName');
  inherited DoOnGetData(Data);
end;

procedure THMQueryProvider.DoOnUpdateData(Delta: TPacketDataSet);
begin
  ShowDebug('OnUpdateData');
  inherited DoOnUpdateData(Delta);
end;

function THMQueryProvider.DataRequest(Input: OleVariant): OleVariant;
begin
  ShowDebug('OnDataRequest');
  Result := inherited DataRequest(Input);
end;

procedure THMQueryProvider.SetComment(const Value: string);
begin
  FComment := Value;
end;

procedure THMQueryProvider.SetKeyField(const Value: string);
begin
  FKeyField := Value;
end;

procedure THMQueryProvider.DoOnUpdateField(SField, DField: TField; State: TUpdateTableState);
begin
  if Assigned(FOnUpdateField) then FOnUpdateField(Self, SField, DField, State);
end;

procedure THMQueryProvider.SetOnUpdateField(const Value: TOnUpdateField);
begin
  FOnUpdateField := Value;
end;

procedure THMQueryProvider.SetOpenOnec(const Value: Boolean);
begin
  FOpenOnec := Value;
end;

function THMQueryProvider.GetCheckSql: IStatus;
begin
  Result:=FQuery.CheckSql;
end;

procedure THMQueryProvider.SetCheckSql(const Value: IStatus);
begin
  FQuery.CheckSql:=Value;
end;

end.

⌨️ 快捷键说明

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