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

📄 dataprocess.pas

📁 用delphi编写的数据库管理软件
💻 PAS
字号:
unit DataProcess;

interface

uses
   Variants, DBClient, DB, Forms, Classes, SysUtils;

  function baseformapplyupdata(CDS:Tclientdataset;ptablename,pkeyfield:wideString):wordBool;
  function getsqldata(CDS:Tclientdataset;TableName,keyField:wideString;ssql:wideString;const Maxrec:integer=20):boolean;
  function getDataFormServer(ACDS:TclientDataSet;ssql:wideString;const reccount:integer=20):wordbool;
  function insertCDSDATA(s,d:TclientDataset):boolean;
  function ClearCDSDATA(s:Tclientdataset):boolean;
  function GetMaxid(TableName, KeyField:String): Integer;
  function MDApplyUpdate(MCDS: TClientdataset; const MtableName, MkeyField: WideString;
                         DCDS: TClientdataset; const DtableName, DkeyField: WideString): WordBool;


implementation

uses Global;


function baseformapplyupdata(CDS:Tclientdataset;ptablename,pkeyfield:wideString):wordBool;
begin
  Result:=DLLSCT.AppServer.ApplyupdateDelta(CurrentDBName,CDS.Delta,ptablename,pkeyfield,DLLUcode,f_GetComputerName());
end;

function getsqldata(CDS:Tclientdataset;TableName,keyField:wideString;ssql:wideString;
        const Maxrec:integer=20):boolean;
var
  TempCDS:TclientDataset;
  FkeyValue:String;
  Fsql:String;

    function SetSql():String;
      const SqlFmt='select * from %s%s%s order by %s';
      begin
          if FkeyValue='' then
            begin
              Result:=Format(SqlFmt,[Tablename,' where ',ssql,keyField]);
            end
            else
            begin
              Result:=Format(sqlFmt,[Tablename,' where ',
                    keyfield+'>'+#39+FkeyValue+#39+' and '+ssql,keyField]);
            end;
      end;

begin
  ClearCDSData(CDS);
  try
    TempCDS:=Tclientdataset.Create(nil);
    TempCDS.FetchOnDemand:=False;
    tempCDS.PacketRecords:=Maxrec;
    FkeyValue:='';
    while True do
      begin
        Fsql:=SetSql;
        GetDataFormServer(TempCDS,Fsql,MaxRec);
        InsertCDSData(TempCDS,CDS);

        if TempCDS.RecordCount<MaxRec then
          Break;

        TempCDS.Last;
        FkeyValue:=TempCDS.fieldbyname(keyField).AsString;
        ClearCDSdata(TempCDS);
        Fsql:='';
        Application.ProcessMessages;
      end;
  finally
    TempCDS.Close;
    TempCDS.Free();
  end;
  Result:=True;
end;

function getDataFormServer(ACDS:TclientDataSet;ssql:wideString;const reccount:integer=20):wordbool;
begin
  try
    ACDS.Data:=DLLSCT.AppServer.GetlargeData(CurrentDBName,ssql,reccount);
    Result:=True;
  except
    Result:=False;
  end;
end;

function insertCDSDATA(s,d:TclientDataset):boolean;
var
  V:TbookMark;
begin
  Result:=True;
  try
  V:=D.GetBookmark;
    if d.Active then
      d.AppendData(S.Data,False)
      else
      D.Data:=S.Data;
  finally
    D.GotoBookmark(V);
    D.FreeBookmark(V);
  end;
end;

function ClearCDSDATA(s:Tclientdataset):boolean;
begin
  S.Close;
  s.Data:=null;
  Result:=True;
end;

function GetMaxid(TableName, KeyField:String): Integer;
begin
  Result:=DLLSCT.AppServer.GetMaxID(CurrentDBName,TableName,KeyField);
end;

function MDApplyUpdate(MCDS: TClientdataset; const MtableName, MkeyField: WideString;
                       DCDS: TClientdataset; const DtableName, DkeyField: WideString): WordBool;
begin
  Result:=DLLSCT.AppServer.ApplyupdateMD(CurrentDBName,MCDS.Delta,Mtablename,MkeyField,
                            DCDS.Delta,Dtablename,DkeyField,DLLUcode,f_GetComputerName());
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -