AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen
Ein herzliches Dankeschön Uwe,
werde ich gleich mal umsetzen. Sicherlich ist es nur eine Kleinigkeit das ursprüngliche Problem, ich übersehe sicherlich etwas. Danke nochmals, Gruß Kostas |
AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen
Hallo zusammen,
so funktioniert es jetzt einwandfrei. Dankeschön Uwe.
Delphi-Quellcode:
-------------------------------SERVER---------------------
function TdmDALZMI.GetBauJSONStr(BauNr:integer): String; var stream: TStringStream; begin stream := TStringStream.Create; try qrGetBau.Active := False; qrGetBau.Params[0].Value := BauNr; qrGetBau.Active := True; qrGetBau.SaveToStream(stream, TFDStorageFormat.sfJSON); stream.Seek(0, soFromBeginning); qrGetBau.Active := False; result := stream.DataString; finally stream.Free; end; end; -------------------------------CLIENT--------------------- procedure TdmZMI.GetBauJSONStr(BauNr:integer); var LDataSetList: TFDJSONDataSets; LJSONStr: String; LZMIClient: TdmServerMethodsZMIClient; begin LZMIClient := TdmServerMethodsZMIClient.Create(CMClientModule.CMCSQLConnection.DBXConnection); try LJSONStr := LZMIClient.ZMI_GetBauJSONStr(BauNr); JSONToDataSet(LJSONStr, mtBau); finally LZMIClient.Free; end; mtBau.Open; end; procedure TdmZMI.JSONToDataSet(const Source: string; Target: TFDDataSet); var stream: TStringStream; begin stream := TStringStream.Create(Source); try Target.LoadFromStream(stream, TFDStorageFormat.sfJSON); finally stream.Free; end; end; Gruß Kostas |
AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen
Noch eine Kleinigkeit,
der Server liefert das Result als String. Ist es hier sinnvoll ein TStream auszugeben da das Select schon durchaus eine größere Datenmenge liefern könnte? Gruß Kostas |
AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen
Bei Streams mußt du etwas aufpassen, da der DataSnap-Stream gern Mal etwas anders arbeitet (Size = -1, ab einer gewissen Größe).
Meine alten Threads dazu sollten sich bestimmt finden lassen. Aber wenn du sowieso eh "nur" ein DataSet übertragen willst, dann übertrage Dieses direkt, ohne es erst umzuwandeln. :stupid:
Delphi-Quellcode:
function TdmDALZMI.GetBau(BauNr: Integer): TDataSet;
|
AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen
Zitat:
Zitat:
|
AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen
Nee, wieso?
Man sagt dem DataSnap, daß es seine Datei als JSON und nicht binär übertragen soll. DataSnap benutzt DBX für die Connection und DBX kann Beides. Beiß jetzt nur nicht mehr, wie das genau war ... irgendwo gab es auch ein Transport-Event, wo man den rausgehenden und reinkommenden Traffic des Servers loggen konnte. Das hatten wir damals mal benutzt, als es mit DataSnap anfing und dort sind die DataSets schön als JSON durchgerauscht. |
AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen
Hallo Zusammen,
ich habe umgestellt auf DataSet übertragen das funktioniert einwandfrei. Zuvor wird wegen Log das DataSet als Jason exportiert und Serverseitig gespeichert. Somit alles im grünen Bereich. Herzlichen Dank schon mal an alle. Jetzt hätte ich noch eine architektonische Frage zu DataSnap. Ich werde ein neun Thread dafür erstellen. Gruß Kostas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz