
FLUSH
Instruction dBase V et suivants
Ecrit les zones tampon de données sur disque et libère la mémoire non
affectée.
Syntaxe
FLUSH
Description
|
Utilisez FLUSH pour protéger l'intégrité des données et optimiser la mémoire
disponible.
Lorsque vous ouvrez une table et ses fichiers index et mémos associés, Visual dBASE
charge un certain nombre d'enregistrements du fichier dans la zone tampon de mémoire,
ainsi que la partie de chaque index ouvert qui correspond à ces enregistrements. Lorsque
la zone tampon est pleine ou lorsque vous fermez les tables et les index (avec CLOSE
DATABASES, USE, CLOSE INDEXES, CLOSE ALL ou SET INDEX TO), Visual dBASE écrit les
enregistrements sur disque, stockant ainsi toutes les modifications effectuées. FLUSH
vous permet de sauvegarder les informations de la zone tampon de données sur disque sans
fermer au préalable les tables ou les index. FLUSH sauvegarde les informations des tables
et des fichiers associés ouverts dans des zones de travail autres que la zone de travail
en cours.
Utilisez FLUSH lorsque vous voulez stocker des informations critiques sur disque.
Cependant, n'utilisez pas trop fréquemment FLUSH, car elle ralentit l'exécution. Par
exemple, dans une application de saisie de commandes dans laquelle seules quelques
commandes sont saisies chaque heure, FLUSH peut sauvegarder des données qui pourraient
être perdues si vous mettiez l'ordinateur hors tension par inadvertance; puisque les
commandes sont saisies de temps en temps, le temps requis pour l'exécution de FLUSH n'est
pas important.
xDML vers ooDML
|
Vous pouvez forcer l'écriture des changements d'une table en OODML avec
la méthode flush() de l'ensemble de lignes:
Notez que si un cache disque est en cours d'utilisation, les données sont
écrites sur le cache du disque, plutôt que sur le disque lui-même. Dans ce cas, le
cache disque décide du moment ou écrire sur le disque dur phsyique .
Il y a une méthode connexe de l'ensemble de lignes: refresh(). La méthode refresh() est
vraiment utilisé pour rafraîchir un ensemble de lignes dans la mémoire, mais toutes les
lignes mises en cache sont supprimés, et les données sont lues directement depuis le
disque.
Dans l'exemple suivant, FLUSH est utilisée après deux scénarios
différents de saisie de données pour effacer les zones tampons lorsque AUTOSAVE est mis
à OFF :
USE SOCIETE IN SELECT( ) |
SELECT SOCIETE |
SET AUTOSAVE OFF |
APPEND BLANK |
@ 2, 2 SAY "Code société" GET SOCIETE->C_SOCIETE |
@ 3, 2 SAY "Nom de société" GET SOCIETE->SOCIETE |
@ 5, 8 SAY "Rue" GET SOCIETE->RUE1 |
@ 6,15 GET SOCIETE->RUE2 |
@ 7,10 SAY "Ville" GET SOCIETE->VILLE |
@ 7,35 SAY "Etat" GET SOCIETE->ETAT |
@ 8,35 SAY "Code postal" GET SOCIETE->CODE_POSTE |
READ |
FLUSH |
CLEAR |
APPEND |
FLUSH |
CLOSE ALL |
Les
difficultées rencontrées (méthode flush() ) :
|
Vu sur http://news.dbase.com/newsgroups.php?art_group=dbase.programming&article_id=30325
Sat, 26 Sep 2009 16:22:41 +1200
Newsgroups dbase.programming
"Charles" a écrit dans le message
Nouvelles: h9j1r7.3j0.1 news.alldbase.com @ ...
> J'ai un problème avec l'obtention des données écrites sur le disque après une
commande Enregistrer (Save). S'il reste des données dans les tampons, je ne peux pas
accéder aux tables en raison d'un verrou de table. J'ai une commande rowset.flush()
après Enregistrer. J'ai lu le fil sur ce forum, et j'ai essayé rowset.refresh(), mais
ça ne m'aide pas non plus. J'ai essayé d'utiliser à la fois flush() et refresh() et ça
ne m'a pas aidé. J'ai lu les fichiers d'aide qui mentionnent que les caches des disques
peuvent être impliqués, mais j'ai désactivé les caches-disques sur tous les postes du
réseau, mais ça ne semble pas être le problème.
Y a-t-il quoi que ce soit qui puisse forcer les tampons à écrire sur
le disque ? À l'heure actuelle la seule solution que j'ai pour forcer l'écriture sur le
disque est de quitter l'application.
>
> J'utilise XP Home et dBASE 2.6.1.5 sur le réseau peer to peer.
>
> Charles
Si vous utilisez deux ou plusieurs programmes d'accès aux mêmes données assurez-vous
que LOCAL SHARE est défini sur true dans le BDE
Pour cela :
Ouvrir BDE.exe sélectionnez Configutaion, puis ouvrez le système, puis INIT puis
modifiez LOCAL SHARE à true
Ness
retour
Sources :
Aide Visual dbase V5.7
http://www.dbase.com/Knowledgebase/INT/xb2vdb7oodml/x2oodml.htm
Aide dBase Plus 2.6.0
Retour à l'accueil
Si vous voyez des erreurs, ou souhaitez apporter des compléments, n'hésitez pas à le signaler.
Dernière modification : jeudi 05 août 2010
© M.Abraham.
|