前面的博客提到用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;