salut tt le monde je programme avec Delphi mais j'ai un probleme.
comment enregestrie les données dans la base de données sans fermer l'application, parceque lors d'une coupure du l'electricité touts les données sront perdus. merçi
salut tt le monde je programme avec Delphi mais j'ai un probleme.
comment enregestrie les données dans la base de données sans fermer l'application, parceque lors d'une coupure du l'electricité touts les données sront perdus. merçi
Bonjour et bienvenue sur Developpez.com. Je ne comprends pas bien votre question car si vous faites des opérations sur un TTable ou que vous exécutez une requête d'insertion/modification/suppression vos données sont déjà sauvegardées en base de données.
La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème
Pas de sollicitations techniques par MP -
Salut,
C'est courant avec BDE/Paradox lorsqu'on utilise un TTable. On doit flusher les données depuis le buffer du BDE vers la tables. avec la methode FlushBuffers aprés un post :parceque lors d'une coupure du l'electricité touts les données sront perdus.
Si on fait des Post dans une boucle alors la méthode FlushBuffers doit-être invoqué à la sortie de la boucle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Table1.Post; Table1.FlushBuffers;
Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.
Lao Tseu - un sage chinois
Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.
Friedrich Nietzsche - Par délà le bien et le mal
Bonjour à vous,
Donc si je comprend bien,aprés éxécution de la méthode Post,les données modifiées seront stocker dans un Buffer et non dans la table?!C'est courant avec BDE/Paradox lorsqu'on utilise un TTable. On doit flusher les données depuis le buffer du BDE vers la tables. avec la methode FlushBuffers aprés un post
Personnelement je n'ai jamais utilisé la méthode FlushBuffers,Mais je pense que ça ne va pas duré
Néanmoins je ne comprends pas quelque chose :
Puisque sans utiliser la méthode FlushBuffer les données sont bien enregistrées dans la table alors il doit y avoir un transfert "automatique" qui se fait aprés appel de post (du buffer vers la table)
La question que je me pose c'est qu'à quel "moment" ce transfert s'effectue?
Si ce transfert se fait "automatiquement" juste aprés appel de la méthode POST,je ne vois pas l'utilité d'utiliser FlushBuffers
Merci d'avance pour vos réponses.
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»
Bonjour
C'est dans le "A Paradox Table Survival Guide for C++Builder and Delphi Developers"Flush your Buffers
Force your data write to disk. As mentioned, changes made to a Paradox table are normally not written to disk until the table is closed, so power failure or system crash can result in a loss of data, and or table corruption.. To avoid this loss of data you can instruct the VCL to write changes to disk using the FlushBuffers method. The FlushBuffers method didn't appear until Delphi and C++ Builder 3. For earlier version a direct call to the BDE API method DbiSaveChanges accomplishes the same thing.
Le transfert automatique se fait à la fermeture de la table (????)
Même à la fermeture de la table ca ne regle pas le problème donc je fais appele à FlushBuffersuntil the table is closed
Mais je pense que lorsqu'on ferme l'application le transfert automatique s'effectue, les données sont définitivement stockées sur disque.
Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.
Lao Tseu - un sage chinois
Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.
Friedrich Nietzsche - Par délà le bien et le mal
Merci à vous Freud,
Maintenant il faudrai que ça soit un reflexe pour moi d'appeler FlushBuffer juste aprés edition de la table
Vous l'avez en PDF?C'est dans le "A Paradox Table Survival Guide for C++Builder and Delphi Developers"
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»
tout a fait et puis ca ne coûte rien de mettre un flushbuffers aprés le post dans un TTable. Ainsi on est tranquille que les données sont stockées définitivement sur disque et d'eviter ces problèmes evoquer dans cette doc surtout si on déploye l'application en réseaux.
Pour le document "A Paradox Table Survival Guide for C++Builder and Delphi Developers" je l'ai en word doc il fait 360 ko je ne pense pas qu'il passe par ici
Mais je vous donnes le lien oû vous pouvez le télécharger :
http://www.delphipages.com/news/detaildocs.cfm?ID=74
ainsi que d'autres documents sur le BDE/PARADOX
Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.
Lao Tseu - un sage chinois
Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.
Friedrich Nietzsche - Par délà le bien et le mal
oups !.... la doc est sur developpez.com :
http://www.developpez.com/sgbd/PDox%...al%20Guide.rtf
Le 1er lien vous renvois vers developpez.com
N'importe comment le 1er lien contient de nombreux liens sur le BDE
Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.
Lao Tseu - un sage chinois
Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.
Friedrich Nietzsche - Par délà le bien et le mal
Merciii ,cette doc m'a l'air trés interressante!
Je vais me régaler
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»
de rien
Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.
Lao Tseu - un sage chinois
Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.
Friedrich Nietzsche - Par délà le bien et le mal
Même avec le "flushbuffers" j'ai déjà eut des soucis quand la table n'est pas sur le même PC. Close/Open était plus efficace.
quel genre de soucis ?
Je veux dire quel type de problème que l'on pourrait avoir lorsqu'on utilise le FlushBuffers au lieu du Close/Open lorsque la table n'est pas sur le même PC.
Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.
Lao Tseu - un sage chinois
Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.
Friedrich Nietzsche - Par délà le bien et le mal
Le même problème que l'auteur du post : perte de données en cas de fermeture brutale. Mais ça fait belle lurette que l'on utilise plus paradox en dehors du monoposte. Tout est passé en Interbase ou Oracle.
Moi j'avais utilisé dans le temps la fonction BDE suivante :
ou DSET est un composant TDataSet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DbiSaveChanges((DSET as TTable).Handle)
Si vous êtes libre, choisissez le Logiciel Libre.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager