⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datapersistentunit.pas

📁 Delphi最新三层源码(1.0),对delphi有帮助
💻 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 + -