📄 serverdm.pas
字号:
// Direct Oracle Access - Server
// Allround Automations
// support@allroundautomations.nl
// http://www.allroundautomations.nl
//
// This application demonstrates:
// - The Server part of a 3 Tier application
// - The use of the TOracleProvider component
// This is the Remote Data Module
// You can add additional TOracleProvider components to this unit and
// register them by a right click on the component and selecting Export...
unit ServerDM;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComServ, ComObj, VCLCom, StdVcl, BdeProv, DataBkr, Server_TLB, Provider,
OracleProvider, Db, OracleData, Oracle, ServerUnit;
type
TRemoteDM = class(TDataModule, IRemoteDM)
OracleSession: TOracleSession;
OracleLogon: TOracleLogon;
DeptDataSet: TOracleDataSet;
EmpDataSet: TOracleDataSet;
DeptProvider: TOracleProvider;
EmpProvider: TOracleProvider;
procedure RemoteDMCreate(Sender: TObject);
procedure AfterQuery(Sender: TOracleDataSet);
procedure AfterPost(DataSet: TDataSet);
procedure TranslateMessage(Sender: TOracleDataSet;
ErrorCode: Integer; const ConstraintName: String; Action: Char;
var Msg: String);
procedure RemoteDMDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
protected
function Get_EmpProvider: IProvider; safecall;
function Get_DeptProvider: IProvider; safecall;
end;
var
RemoteDM: TRemoteDM;
// Remember the used username/password & database
DefaultUsername: string = '';
DefaultPassword: string = '';
DefaultDatabase: string = '';
implementation
{$R *.DFM}
function TRemoteDM.Get_EmpProvider: IProvider;
begin
Result := EmpProvider.Provider;
end;
function TRemoteDM.Get_DeptProvider: IProvider;
begin
Result := DeptProvider.Provider;
end;
// LogOn when the Datamodule is created
procedure TRemoteDM.RemoteDMCreate(Sender: TObject);
begin
Log('DM Created');
UpdateStatusLine(+1);
if not OracleSession.Connected then
begin
OracleSession.LogonUsername := DefaultUsername;
OracleSession.LogonPassword := DefaultPassword;
OracleSession.LogonDatabase := DefaultDatabase;
OracleLogon.Execute;
// Remember usename/password so the next one will connect without the dialog
DefaultUsername := OracleSession.LogonUsername;
DefaultPassword := OracleSession.LogonPassword;
DefaultDatabase := OracleSession.LogonDatabase;
if OracleSession.Connected then Log('Connected as ' + DefaultUsername);
end;
end;
// Decrement the count if the DM is destroyed
procedure TRemoteDM.RemoteDMDestroy(Sender: TObject);
begin
Log('DM Destroyed');
UpdateStatusLine(-1);
end;
// Log if a query is executed
procedure TRemoteDM.AfterQuery(Sender: TOracleDataSet);
begin
Log(Sender.Name + ' Query');
end;
// Log if the dataset is posted
procedure TRemoteDM.AfterPost(DataSet: TDataSet);
begin
Log(DataSet.Name + ' Post');
end;
// Log any errors
procedure TRemoteDM.TranslateMessage(Sender: TOracleDataSet;
ErrorCode: Integer; const ConstraintName: String; Action: Char;
var Msg: String);
begin
Log(Sender.Name + ' ' + Msg);
end;
initialization
TComponentFactory.Create(ComServer, TRemoteDM,
Class_RemoteDM, ciMultiInstance);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -