urdmlargedatasetdemo.pas
来自「就是这本书的随书代码。包括《实战Delphi 5.x-分布式多层应用系统篇》」· PAS 代码 · 共 101 行
PAS
101 行
unit urdmLargeDataSetDemo;
interface
uses
Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
DBClient, PLargeDataSetDemoServer_TLB, StdVcl, Db, DBTables, Provider;
type
TldsDemoServer = class(TRemoteDataModule, IldsDemoServer)
Database1: TDatabase;
Query1: TQuery;
DataSetProvider1: TDataSetProvider;
dspGeneral: TDataSetProvider;
quryGeneral: TQuery;
tblDataRequest: TTable;
dspDataRequest: TDataSetProvider;
procedure DataSetProvider1BeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
procedure RemoteDataModuleCreate(Sender: TObject);
procedure RemoteDataModuleDestroy(Sender: TObject);
function DataSetProvider1DataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
function dspDataRequestDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
private
{ Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
public
{ Public declarations }
end;
implementation
{$R *.DFM}
class procedure TldsDemoServer.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 TldsDemoServer.DataSetProvider1BeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
begin
with Sender as TDataSetProvider do
begin
DataSet.Open;
DataSet.Locate('NUM', OwnerData, []);
DataSet.Next;
end;
end;
procedure TldsDemoServer.RemoteDataModuleCreate(Sender: TObject);
begin
Database1.Connected := True;
Query1.Active := True;
end;
procedure TldsDemoServer.RemoteDataModuleDestroy(Sender: TObject);
begin
Database1.CloseDataSets;
Database1.Connected := False;
end;
function TldsDemoServer.DataSetProvider1DataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
Query1.SQL.Text := Input;
Query1.Open;
Result := DataSetProvider1.Data;
end;
function TldsDemoServer.dspDataRequestDataRequest(Sender: TObject;
Input: OleVariant): OleVariant;
begin
with tblDataRequest do
begin
SetRangeStart;
FieldByName('NUM').AsString := Input;
SetRangeEnd;
FieldByName('NUM').AsString := '010361';
ApplyRange;
end;
end;
initialization
TComponentFactory.Create(ComServer, TldsDemoServer,
Class_ldsDemoServer, ciMultiInstance, tmApartment);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?