AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken DataSnap ein TFDJSONDataSets als TJSONObject übertragen

DataSnap ein TFDJSONDataSets als TJSONObject übertragen

Ein Thema von Kostas · begonnen am 25. Mär 2015 · letzter Beitrag vom 26. Mär 2015
Antwort Antwort
Seite 2 von 2     12
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 15:15
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
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 16:09
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
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 16:51
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#14

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 16:59
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.
function TdmDALZMI.GetBau(BauNr: Integer): TDataSet;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Mär 2015 um 17:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.977 Beiträge
 
Delphi 12 Athens
 
#15

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 18:55
Aber wenn du sowieso eh "nur" ein DataSet übertragen willst, dann übertrage Dieses direkt, ohne es erst umzuwandeln.
Das widerspricht aber der Intention:

Zitat:
ich möchte gerne jedes DataSet welches zum Client übertragen wird als TJSONObject
(String Klartext) separat zwischenspeichern.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#16

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 26. Mär 2015, 04:52
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Mär 2015 um 04:57 Uhr)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 26. Mär 2015, 15:58
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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