📄 dataprocess.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 + -