📄 datapersistentunit.pas
字号:
unit DataPersistentUnit;
interface
uses
SysUtils, DBClient, MConnect, IDataPersistentUnit, CardServer_TLB;
type
TDataPersistent = class(TInterfacedObject, IDLLDataPersistent)
private
pIRDMDataPerDisp: IRDMCardServerDisp;
protected
procedure SetIDataPerDisp(tmpDisp: IRDMCardServerDisp); safecall;
function GetIDataPerDisp: IRDMCardServerDisp; safecall;
function BeginTrans(out pMsg: WideString): Boolean; safecall;
function CommitTrans(out pMsg: WideString): Boolean; safecall;
function RollBackTrans(out pMsg: WideString): Boolean; safecall;
function SelectData(const PWStr: pWideString; var pPrvName: WideString): Boolean; Stdcall;
function InsertDataSet(const PWStr: pWideString; out pMsg: WideString): Boolean; Stdcall;
function UpdateDataSet(const PWStr: pWideString; out pMsg: WideString): Boolean; Stdcall;
function DeleteDataSet(const PWStr: pWideString; out pMsg: WideString): Boolean; Stdcall;
function CloseDataSet(const PWStr: pWideString): Integer; Stdcall;
private
function ExecuteDataSet(const PWStr: pWideString; out pMsg: WideString): Boolean; Stdcall;
public
property IRDMDataPerDisp: IRDMCardServerDisp read GetIDataPerDisp write SetIDataPerDisp;
constructor Create;
end;
implementation
constructor TDataPersistent.Create;
begin
inherited Create;
end;
function TDataPersistent.GetIDataPerDisp: IRDMCardServerDisp; safecall;
begin
Result := pIRDMDataPerDisp;
end;
procedure TDataPersistent.SetIDataPerDisp(tmpDisp: IRDMCardServerDisp); safecall;
begin
pIRDMDataPerDisp := tmpDisp;
end;
function TDataPersistent.BeginTrans(out pMsg: WideString): Boolean; safecall;
var
wsRes: WideString;
begin
Result := false;
try
pIRDMDataPerDisp.BeginTrans(wsRes, pMsg);
if wsRes='1' then
Result := true
else
Result := false;
except
Result := false;
end;
end;
function TDataPersistent.CommitTrans(out pMsg: WideString): Boolean; safecall;
var
wsRes: WideString;
begin
Result := false;
try
pIRDMDataPerDisp.CommitTrans(wsRes, pMsg);
if wsRes='1' then
Result := true
else
Result := false;
except
Result := false;
end;
end;
function TDataPersistent.RollBackTrans(out pMsg: WideString): Boolean; safecall;
var
wsRes: WideString;
begin
Result := false;
try
pIRDMDataPerDisp.RollBackTrans(wsRes, pMsg);
if wsRes='1' then
Result := true
else
Result := false;
except
Result := false;
end;
end;
function TDataPersistent.SelectData(const PWStr: pWideString; var pPrvName: WideString): Boolean; Stdcall;
var
sSqlStr: WideString;
sPrvName : WideString;
begin
Result := True;
sSqlStr := PWStr^;
sPrvName := pPrvName;
try
pIRDMDataPerDisp.SelectData(sSqlStr, sPrvName);
if (length(Trim(sPrvName))=0) or (Pos('DSP', UpperCase(sPrvName))<=0) then
begin
Result := False;
Exit;
end;
pPrvName := sPrvName;
Result := true;
except
Result := False;
end;
end;
function TDataPersistent.ExecuteDataSet(const PWStr: pWideString; out pMsg: WideString):
Boolean; Stdcall;
var
i_Result: OleVariant;
sSqlStr, wsRes: WideString;
begin
Result := false;
sSqlStr := PWStr^;
try
pIRDMDataPerDisp.ExecuteData(sSqlStr, wsRes, pMsg);
if wsRes='1' then
Result := true
else
Result := false;
except
Result := false;
end;
end;
function TDataPersistent.InsertDataSet(const PWStr: pWideString; out pMsg: WideString):
Boolean; Stdcall;
begin
Result := ExecuteDataSet(PWStr, pMsg);
end;
function TDataPersistent.UpdateDataSet(const PWStr: pWideString; out pMsg: WideString):
Boolean; Stdcall;
begin
Result := ExecuteDataSet(PWStr, pMsg);
end;
function TDataPersistent.DeleteDataSet(const PWStr: pWideString; out pMsg: WideString):
Boolean; Stdcall;
begin
Result := ExecuteDataSet(PWStr, pMsg);
end;
function TDataPersistent.CloseDataSet(const PWStr: pWideString): Integer; Stdcall;
var
sSqlStr: WideString;
begin
Result := -1;
sSqlStr := PWStr^;
Try
pIRDMDataPerDisp.CloseDataSet(sSqlStr);
Result := 0;
Except
Result := -1;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -