Hola
Jere_84
Vamos a guiarnos por la sugerencia de
mamcx, que está muy buena
Antes de nada unas palabras...: "El poderoso Datasnap que acorta distancias"
Jere_84 dice:
Cita:
|
Hola Club, En mi aplicación Datasnap quiero hacer una función del lado servidor que tome como parámetro un objeto tipo TClientDataSet y otro tipo TField, el problema es que aparentemente y no se bien el porque pero así parece en la ayuda Delphi, solo soporta entre las capas los siguientes tipos de datos, algo que resulta bastante limitado. .....
|
mamcx responde a la duda, solo vamos tomar la solución que él dá: (al margen de la explicación que nos dió, corta y buena)
Cita:
AFORTUNADAMENTE ClientDataset permite guardar datos en un stream/xml:
http://stackoverflow.com/questions/3...xml-contents-i
Código Delphi [-]ClientDataSet1.SaveToFile('file.xml',dfXML);
Defines que el servidor pasa datos string. y usas el metodo de LoadFromFile en el otro extremo. Listo
|
Haciendo mas fácil esto:
En el lado cliente de tu aplicativo Datasnap
Código Delphi
[-]
procedure TForm13.Button1Click(Sender: TObject);
var
f: TextFile;
xml, line: string;
fileName: string;
begin
fileName:= ExtractFilePath( Application.ExeName ) + 'datos.xml';
ClientDataSet1.Open;
ClientDataSet1.SaveToFile(fileName, dfXML);
AssignFile(f, fileName);
reset(f);
while not Eof(f) do
begin
ReadLn(f, line);
xml := xml + line;
end;
closeFile(f);
xxxxx.carga(xml); end;
En el lado server el método que recepciona los datos debria ser mas o menos asi:
Código Delphi
[-]
procedure TServerMethodsServerProductos.carga(xml: string);
var
f: TextFile;
fileName: string;
begin
fileName:= ExtractFilePath( Application.ExeName ) + 'dstos.xml';
AssignFile(f, fileName);
Rewrite(f);
Write(f, xml);
closeFile(f);
ClientDataSet2.close;
ClientDataSet2.LoadFromFile(fileName);
ClientDataSet2.Open;
end;
Espero que sirva de algo el código...
Your friend
StartKill
Lima-Perú