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
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.169 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 10:46
FireDac Query als TJSONObject an den Client über TCP(nicht HTTP) zu übertragen und dort
auf einfache weise ebenfalls mit FireDac zu konsumieren?
Warum willst Du aus dem Query erst ein JSONObject machen?

Wir reden hier doch von "Select * from Datenbank where Name Like "Per%" order by Name Limit 100"
oder so?

Übertrag das doch einfach als String...

Oder übersehe ist gerade etwas?

Mavarik
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.230 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 10:49
Er meint nicht den Query-String, sondern das aus der Query resultierende TDataSet.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.169 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 10:54
Er meint nicht den Query-String, sondern das aus der Query resultierende TDataSet.
Ahh ok... Hatte ich dann doch etwas übersehen...
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.122 Beiträge
 
Delphi 12 Athens
 
#4

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 10:56
Hallo Mavarik,

ich möchte gerne jedes DataSet welches zum Client übertragen wird als TJSONObject
(String Klartext) separat zwischenspeichern. Der Hintergrund, es gibt Gruppen von Clients.
Wenn ein Teilnehmer einer Gruppe ein Paket anfordert, muss dieses Paket auch an alle
anderen Clients dieser Gruppe vorgehalten werden bis sie sich anmelden. Danach bekommen sie
die Pakete automatisch übertragen. TJSONObject ist schlank und lässt sich dadurch gut zwischenspeichern.

Sicherlich ist nur eine Kleinigkeit falsch, auf die ich nicht komme.
Wenn es jedoch eine bessere Möglichkeit gibt wie du schon sagtest einfach das Result eines Select
als TJSONObject zu exportieren, zwischenspeichern und zum Client zu transportieren, bin ich da sehr offen
dafür.

Gruß Kostas

Geändert von Kostas (25. Mär 2015 um 10:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.169 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 11:03
ich möchte gerne jedes DataSet welches zum Client übertragen wird als TJSONObject
(String Klartext) separat zwischenspeichern.
Ich komme - wahrscheinlich in 4 Wochen - auch zu dieser Stelle... Also durchaus interessant...
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.122 Beiträge
 
Delphi 12 Athens
 
#6

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 14:03
Ich habe etwas feststellen können.
Wenn ich die Query per SaveToFile als Jason exportiere, bekomme ich ein sauberes JASON.
Der TFDJSONDataSetsWriter erzeugt ein binäres Format.

könnte hier das Problem sein?

Delphi-Quellcode:
function TdmDALZMI.GetBau(BauNr:integer): TFDJSONDataSets;
begin
  qrGetBau.Active := False;
  qrGetBau.Params[0].Value := BauNr;
  qrGetBau.Active := True;
  qrGetBau.SaveToFile('f:\JSONBau.txt',TFDStorageFormat.sfJSON); <<< String Klartext

  Result := TFDJSONDataSets.Create;
  TFDJSONDataSetsWriter.ListAdd(Result, qrGetBau);
end;


function TdmDALZMI.GetBauJSON(BauNr:integer): TJSONObject;
var
  LDataSets: TFDJSONDataSets;
  s:TStringList;
begin
  LDataSets := GetBau(BauNr);
  try
    Result := TJSONObject.Create;
    TFDJSONInterceptor.DataSetsToJSONObject(LDataSets, Result);

    s:=TStringList.Create;
    s.Text := result.ToString;
    s.SaveToFile('f:\JSON.txt'); <<<<< Binärer Inhalt
    s.Free;


  finally
    LDataSets.Free;
  end;
end;

Gruß Kostas
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: DataSnap ein TFDJSONDataSets als TJSONObject übertragen

  Alt 25. Mär 2015, 14:29
Wenn ich die Query per SaveToFile als Jason exportiere, bekomme ich ein sauberes JASON.
Der TFDJSONDataSetsWriter erzeugt ein binäres Format.
Das ist richtig, aber es erklärt jetzt nicht so offensichtlich die Fehlermeldung.

Allerdings kannst du über SaveToStream die Query in einen TStringStream schreiben, den String übertragen und dann ebenfalls über TStringStream und LoadFromStream das DataSet wieder aufbauen. Ist nur ein Workaround - falls es eilig ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

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 14:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz