2017-05-04 2 views
1

J'essaie de déterminer si je peux conserver les données stockées dans un TFDMemTable après avoir fermé l'ensemble de données sans avoir à le sauvegarder dans un fichier.

Dans la persistance mémoire des données TFDMemTable

J'ai vérifié TResourceOptions.Persistent mais cela enregistrera uniquement le nom de fichier spécifié dans TResourceOptions.PersistentFileName lors de l'exécution. Vous pouvez enregistrer des données au moment du design dans le fichier dfm si vous laissez le nom de fichier vide, mais ce n'est pas utile.

J'ai également regardé le .SaveToStream/LoadFromStream mais encore une fois cela enregistre/charge à un fichier spécifié dans TResourceOptions.PersistentFileName, j'espérais que je pourrais juste le garder dans un flux de mémoire local. J'ai les composants DevExpress que je connais leur peut persister les données, mais j'essaie d'utiliser les exemples FDAC REST qui ont une fonctionnalité intégrée pour transférer les tables en JSON. Est-ce que je manque un paramètre quelque part qui me permettra de conserver les données, ou quelqu'un a-t-il une méthode pour le faire?

Répondre

1

Les œuvres suivantes bien pour moi:

procedure TForm1.Button5Click(Sender: TObject); 
var 
    MS : TMemoryStream; 
begin 
    // Requires TFDStanStorageBinLink on form/datamodule 
    MS := TMemoryStream.Create; 
    try 
    FDMemTable1.SaveToStream(MS); 
    FDMemTable1.Close; 
    // sometime later 
    MS.Position := 0; 
    FDMemTable1.LoadFromStream(MS); 
    finally 
    MS.Free; 
    end; 
end; 
+0

Ah la TFDStanStorageBinLink était le chaînon manquant. Je pense que certains de ces composants associés à FireDAC doivent être un peu plus documentés quant à leurs besoins. – mikelittlewood