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

📄 uquerydatamodel.pas

📁 Software Requirements1. Delphi 6 SP22. Oracle 8i R33. Raize 3.0.94. ExpressQuantumGrid 4.505. Expres
💻 PAS
字号:
unit UQueryDataModel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UPrimaryDataModel, Provider, OraProvider, MemDS, DBAccess, Ora,
  OraSmart, DB, DBClient,
  MyTools, MyModel, UAdapterDataModel;

type
  TQueryDataModel = class(TAdapterDataModel, IQuery)
  protected
    procedure PrepareQuery(Parameters: MyTools.IQueryParameters); virtual; abstract;
  public
{---------------------------------------- IQuery ----------------------------------------}
    function Query(Parameters: MyTools.IParameters): Integer; virtual;
  public
    constructor Create(Owner: TComponent); override;
    procedure Refresh(Parameters: IParameters); override;
  end;

implementation

uses
  MyException;

{$R *.dfm}


constructor TQueryDataModel.Create(Owner: TComponent);
begin
  inherited;
  AutoOpenDataSet := False;
end;

function TQueryDataModel.Query(Parameters: IParameters): Integer;
var
  P: IQueryParameters;
begin
  DataSet.Close;
  DataSet.DisableControls;
  try
    try
      P := IQueryParameters(Parameters);
    except
      on E: Exception do
        raise EQueryParameters.Create(Self.ClassName, E.Message);
    end;

    ClientDataSet.Close;
    DataSet.Close;
    PrepareQuery(P);

    try
      DataSet.Open;
      ClientDataSet.Open;
    except
      on E: Exception do
        raise EOpenDataSetException.Create(Self.ClassName, E.Message);
    end;
  finally
    DataSet.EnableControls;
    P := nil;
    Result := 0;
  end;
end;

procedure TQueryDataModel.Refresh(Parameters: IParameters);
begin
  Query(Parameters)
end;

end.

⌨️ 快捷键说明

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