📄 uquerydatamodel.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 + -