OleVariant的本質
OleVariant,COM的一種數據類型。MIDAS基於COM之上構建的,自然使用OleVariant作為數據序列格式。
延續到現在最新的DATASNAP仍然支持它。
TClientDataset.data,TClientDataset.delta,這倆個屬性
的類型都是OleVariant。
OleVariant可以是string,integer,float...
這個大家都知道,但它也可以是array of OleVariant,這個
可能有人不知道了。明白了這點就是datasnap中間件主從表
數據同步的關鍵。
var
a: TServerMethods1Client;
V: OleVariant;
i, iCount: Integer;
begin
Result := False;
if not TryConnectAPPServer then
Exit;
a := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
try
iCount := High(TClientDatasetArray);
V := VarArrayCreate([0, iCount], varVariant);
for i := 0 to iCount do
begin
V[i] := null;
if Datasets[i] <> nil then
begin
if Datasets[i].State in [dsInsert, dsEdit] then
Datasets[i].Post;
if Datasets[i].ChangeCount > 0 then
V[i] := CompressData(Datasets[i].Delta);
end;
end;
Result := a.UploadPOSSalesData(V);