2010-10-07 6 views
0

je voudrais effectuer les opérations suivantes:Suggestions pour la mise en cache un ensemble de données

1) Ouvrez un ensemble de données (en utilisant TMSQuery, composant SDAC DevArt)

2) la mise en cache du contenu sur le disque (imaginez une liste de cutsomers)

3) la prochaine fois que j'ai besoin d'ouvrir l'ensemble de données je vais d'abord le peupler avec des données en cache, puis je vais simplement le rafraîchir en appelant la méthode TMSQuery.RefreshQuick.

De cette façon, je prévois d'obtenir une amélioration substantielle de la vitesse, parce que je n'ai pas besoin de récupérer les enregistrements que j'ai déjà récupérés dans des applications précédentes.

Comment puis-je obtenir cette mise en cache? J'ai beaucoup de datamodules avec TMSQuery, donc d'une certaine manière je voudrais avoir une routine globale qui vérifie que chaque fois que j'essaye d'ouvrir un TMSQuery, si cette requête est en quelque sorte étiquetée je vais essayer de restaurer du cache, appelez RefreshQuick, au cas où j'aurais appellera Open.

Pouvez-vous s'il vous plaît suggérer?

(j'utilise Delphi 2009 et SDAC 4,80)

+1

Lors de l'actualisation de vos données, vous devez comparer les valeurs dans la base de données, donc vous devez toujours interroger toutes les données. Comment cela améliore-t-il la vitesse? Vous avez un champ DateModified ou quelque chose? –

+0

Je prévois d'utiliser la méthode TMSQuery.RegreshQuick. – LaBracca

Répondre

1

Vous pouvez faire 2 choses:

  1. Marque descendant du composant TMSQuery et remplacer la fonction Ouvrir (vous recherchez tout ce que vous datamodule .dfm et fichiers .pas avec TMSQuery et les remplacer par TCachedTMSQuery)
  2. détour/accrocher le TMSQuery.Open (patching exécution)
3

vous pouvez Pour cela, utilisez les composants TClientDataSet et TDataSetProvider, en connectant les composants de cette manière.

TMSQuery-> TDataSetProvider-> TClientDataSet

Le TClientDataSet est une très bonne alternative à persister et récupérer des données à partir d'un disque.

voir ces liens pour plus d'informations sur le ClientDataSet

Questions connexes