Yo tengo configurado Datasnap de la siguiente manera:
En el server, tambien usamos MSSQL. No uses ADO; es lento, es inestable, nunca me gusto
Ya que tenes 10 Seattle, opta por FireDAC.
El sevidor exopne un par de metodos para obtener datos, y uno o dos para insertar/actualizar. Es muy sencillo
Todo gira en torno a la clase "TFDJSONDataSets": es decir, los clientes mandan "TFDJSONDataSets", y el server devuelve "TFDJSONDataSets"; es basicamente un DataSet codificado en json y luego en base64 para que sea lo mas rapido posible de transportar.
En el uses necesitas agregar:
Código Delphi
[-] Data.FireDACJSONReflect,
FireDAC.Stan.StorageJSON,
Los metodos "Get" tienen la forma:
Código Delphi
[-]
function TServerMethods1.GetClientes: TFDJSONDataSets;
begin
qClientes.Active := False;
Result := TFDJSONDataSets.Create;
TFDJSONDataSetsWriter.ListAdd(Result, qClientes);
end;
Los metodos "Insert" tienen mas "truco". Lo que yo hago es, recibir la instancia de TFDJsonDataSets y cargarlo en un FDMemTable; de alli, la recorro y se trata de un "DataSet normal". No hay que asustarse por el "alarmante" numero de operaciones; en realidad es todo bastante rapido
Código Delphi
[-]
function TServerMethods1.InsertPedidos(Pedidos: TFDJSONDataSets): Boolean;
begin
mtPedidos.AppendData(TFDJSONDataSetsReader.GetListValue(Pedidos, 0));
mtDetalles.AppendData(TFDJSONDataSetsReader.GetListValue(Pedidos, 1));
mtPedidos.First;
while not mtPedidos.Eof do
begin
mtPedidos.Next;
end;
end;
Del lado del cliente:
Código Delphi
[-]
var
MemTab: TFDMemTable;
JsonData: TFDJSONDataSets;
begin
MemTab := TFDMemTable.Create(NIL);
JsonData := Client.Methods.GetClientes;
MemTab.AppendData(TFDJSONDataSetsReader.GetListValue(JsonData, 0));
MemTab.Open;
end;
Espero te sirva