📄 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;
implementation
uses dm_Client, Global;
function baseformapplyupdata(CDS:Tclientdataset;ptablename,pkeyfield:wideString):wordBool;
begin
Result:=dmClient.SocketConnection1.AppServer.bsApplyupdate(CDS.Delta,ptablename,pkeyfield,gs_UserCode,gs_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:=dmClient.SocketConnection1.AppServer.GetlargeData(gs_GetDBName,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;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -