📄 servercppdm.cpp
字号:
// 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...
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <atl\atlvcl.h>
#include "ServerCPPDM.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "Oracle"
#pragma link "OracleData"
#pragma link "OracleProvider"
#pragma resource "*.dfm"
TRemoteCPPDM *RemoteCPPDM;
AnsiString DefaultUsername = "";
AnsiString DefaultPassword = "";
AnsiString DefaultDatabase = "";
//---------------------------------------------------------------------------
__fastcall TRemoteCPPDM::TRemoteCPPDM(TComponent* Owner)
: TDataModule(Owner)
{
}
//---------------------------------------------------------------------------
STDMETHODIMP TRemoteCPPDMImpl::get_DeptProvider(IProvider** Value)
{
try
{
_di_IProvider IProv = m_DataModule->DeptProvider->Provider;
IProv->AddRef();
*Value = IProv;
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IRemoteCPPDM);
}
return S_OK;
};
//---------------------------------------------------------------------------
STDMETHODIMP TRemoteCPPDMImpl::get_EmpProvider(IProvider** Value)
{
try
{
_di_IProvider IProv = m_DataModule->EmpProvider->Provider;
IProv->AddRef();
*Value = IProv;
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_IRemoteCPPDM);
}
return S_OK;
};
//---------------------------------------------------------------------------
void __fastcall TRemoteCPPDM::RemoteCPPDMCreate(TObject *Sender)
{
Log("DM Created");
UpdateStatusLine(+1);
if (!OracleSession->Connected)
{
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) Log("Connected as " + DefaultUsername);
}
}
//---------------------------------------------------------------------------
void __fastcall TRemoteCPPDM::RemoteCPPDMDestroy(TObject *Sender)
{
Log("DM Destroyed");
UpdateStatusLine(-1);
}
//---------------------------------------------------------------------------
// Log if a query is executed
void __fastcall TRemoteCPPDM::AfterQuery(TOracleDataSet *Sender)
{
Log(Sender->Name + " Query");
}
//---------------------------------------------------------------------------
// Log if the dataset is posted
void __fastcall TRemoteCPPDM::AfterPost(TDataSet *DataSet)
{
Log(DataSet->Name + " Post");
}
//---------------------------------------------------------------------------
void __fastcall TRemoteCPPDM::TranslateMessage(
TOracleDataSet *Sender, int ErrorCode,
const AnsiString ConstraintName, char Action, AnsiString &Msg)
{
Log(Sender->Name + " " + Msg);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -