前面的博客提到用FIREDAC全面替代COM那一套東西:DATAPROVIDER,OLEVARIANT,CLIENTDATASET,DBEXPRESS。。。
顯然,DATASNAP的遠程方法必須增加對FIREDAC數據集直接序列的參數類型。
從XE5的UPDATE2開始增加一個新的單元文件:Data.FireDACJSONReflect
TFDJSONDataSets是一個數據集列表對象,顧名思義可以返回一個或多個數據集對象,不論是單表或者主從表數據都可傳遞。
服務端演示代碼:
function TServerMethods1.GetJSONData: TFDJSONDataSets; begin Result := TFDJSONDataSets.Create; if not FDMemTable1.Active then FDMemTable1.LoadFromFile('../../customer.fds') else FDMemTable1.Active := False; TFDJSONDataSetsWriter.ListAdd(Result, FDMemTable1); end;
客戶端演示代碼:
var DSList: TFDJSONDataSets; begin FDMemTable1.Close; DSList := ClientModule1.ServerMethods1Client.GetJSONData; FDMemTable1.AppendData( TFDJSONDataSetsReader.GetListValue(DSList, 0)); FDMemTable1.Open; end;