Erwin,
Client side heb ik in mijn test applicatie een TDSRestConnection. Client side heeft de applicatie totaal geen weet van DataBase zaken. Client Side wordt de TFDMemTable opgevuld met data, die via een call naar een method op de REST DataSnap Server, wordt opgehaald :
Delphi Code:
var
oListData : TFDJSONDataSets;
begin
// fdstpTest.Open;
if ( mtblTest.Active ) then
begin
mtblTest.Close;
end;
oListData := DSCustomerClient.GetListData;
try
mtblTest.AppendData( TFDJSONDataSetsReader.GetListValue( oListData, 0 ) );
mtblTest.Open;
finally
if ( Not InstanceOwner ) then
begin
FreeAndNil( oListData );
end;
end;
end;
Bij een ApplyUpdates op die Client Side TFDMemTable wordt dan weer een method uitgevoerd die ervoor zorgt dat de data naar de Rest DataSnap server gestuurd wordt en daar het nodige gebeurt :
Delphi Code:
procedure TClientModule1.ApplyUpdatesNew;
var
aDataSet : TFDMemTable;
oDeltas : TFDJSONDeltas;
aError : string;
aField : TField;
aReader : TFDJSONDataSetsReader;
begin
aDataSet := mtblTest;
// Make sure we save the changes to the DataSet first.
if ( aDataSet.State in dsEditModes ) then
begin
aDataSet.Post;
end;
oDeltas := TFDJSONDeltas.Create;
try
TFDJSONDeltasWriter.ListAdd( oDeltas, 'DETAIL', aDataSet );
aError := DSCustomerClient.UpdateListData( oDeltas );
if ( aError <> '' ) then
begin
raise Exception.CreateFmt( '$s - %s', [ Self.ClassName, aError ] );
end;
end;
end;
Properties aanpassen op de TFDMemTable client side heeft dus weinig zijn, want die staat volledig los van de Rest DataSnap server en dus ook de achterliggende data.
Bookmarks