titre_site.jpg (51607 octets)

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

dbasedos.gif (376 octets) vdb5.gif (351 octets) 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.

Plus2_5-Icon.jpg (1250 octets) 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:

form.rowset.flush()

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.

Code      dbasedos.gif (376 octets)   vdb5.gif (351 octets)   Plus2_5-Icon.jpg (1250 octets)

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

 

bug_jpg.jpg (2635 octets)  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.
>
> Charle
s

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.