You are not logged in.
Pages: 1
I'm new to mORMot.
Starting from sample 28 i try to build a server and a client with data mapped on a SQL Server 2008 R2.
I must populate a TDBGrid on the client side with the records of a table on my DB.
I can load the records in a TSQLTableJson (i see TSQLTableJSON.RowCount is the correct number), but I can't fin a way to put these record in a standard TClientDataset for my TDBGrid.
Someone can help?
This is a part of my code
var
  strJSON: RawUTF8;
  tbJSON : TSQLTableJson;
  fSQLDataset: TSynSQLTableDataSet;
begin
  fModel := DataModel;
  try
    fClient := TSQLHttpClientWinHTTP.Create('localhost',SERVER_PORT,fModel);
    try
      tbJSON := fClient.ExecuteList([TPerson],'select * from person');
      MemoPerson.Lines.Add('tbJSON.RowCount = '+IntToStr(tbJSON.RowCount));
      //... here i need at least the conversion from TSQLTableJson to strJSON (RawUTF8), but i will appreciate other hints 
      //(simple hints! I'm totally new!)
      //what I try to do:
      DSPerson.DataSet := JSONToDataSet(nil, strJSON);
      DSPerson.DataSet := JSONToClientDataSet(fSQLDataset, fJSON, fClient);Offline
Why not just use TSynSQLTableDataSet constructors?
See
    /// initialize the virtual TDataSet from a TSQLTable
    // - WARNING: the supplied TSQLTable instance shall remain available
    // all the time the returned TSynSQLTableDataSet instance is used, unless
    // the TableShouldBeFreed property is set to true or CreateOwnedTable()
    // constructor is used instead
    // - with non-Unicode version of Delphi, you can set aForceWideString to
    // force the use of WideString fields instead of AnsiString, if needed
    // - the TDataSet will be opened once created
    constructor Create(Owner: TComponent; Table: TSQLTable
      {$ifndef UNICODE}; ForceWideString: boolean=false{$endif}); reintroduce;
    /// initialize the virtual TDataSet owning a TSQLTable
    // - this constructor will set TableShouldBeFreed to TRUE
    // - with non-Unicode version of Delphi, you can set aForceWideString to
    // force the use of WideString fields instead of AnsiString, if needed
    // - the TDataSet will be opened once created
    constructor CreateOwnedTable(Owner: TComponent; Table: TSQLTable
      {$ifndef UNICODE}; ForceWideString: boolean=false{$endif}); reintroduce;Offline
Found a way ...
  strJSON := fClient.RetrieveListJSON(TPerson,'ID > 0',[],'');
  DSPerson.DataSet := JSONToClientDataSet(self, strJSON, fClient);
  DSPerson.DataSet.Open;Offline
Pages: 1