barttabac
Messages postés3Date d'inscriptionmercredi 7 mai 2003StatutMembreDernière intervention11 mai 2003
-
7 mai 2003 à 11:38
cs_curie
Messages postés5Date d'inscriptionmardi 12 décembre 2000StatutMembreDernière intervention12 août 2010
-
7 août 2008 à 18:07
Slt à tous,
J'utilise une base de données db4 en utilisant ADO, sous Delphi 6. Pour faire des INSERT ou UPDATE, pas de problème, tout se passe bien.
Par contre mon problème, est sur le DELETE : j'effectue une requete, puis l'exécute (ExecSQL). Mon enregistrement est bien supprimé (je le vérifie sous l'ExplorateurSQL) mais lorsque je rafraichis ma requete, qui affiche les données dans mon application, l'enregistrement est tjs là !!!!!
J'espère avoir été assez clair et surtout que vous pourrez m'éclaircir...
Ced.
cs_Bestiol
Messages postés833Date d'inscriptiondimanche 6 janvier 2002StatutMembreDernière intervention 3 novembre 20051 8 mai 2003 à 00:41
Es-tu sûr qu'il n'y a pas des données "parasites", restées dans une quelconque variable te servant à l'affichage des données, qui fausserai celui-ci dans ton application, et non dans l'explorateur SQL ?!
Je ne peux guère essayer de t'avancer plus, car je ne connais pas vraiment le monde des BDD, mais ça peut être une solution...
barttabac
Messages postés3Date d'inscriptionmercredi 7 mai 2003StatutMembreDernière intervention11 mai 2003 8 mai 2003 à 11:46
Je ne pense pas que le problème vienne de là...car je ne passe pas par des variables. J'effectue directement une requete sur ma base et en tire les champs avec la fonction delphi "FieldByName"...
Le problème serait comme si mon application (uniquement) ne prenait pas en compte les delete et ne se mettait pas à jour...Je pensais à une histoire de "commit", mais ce n'est pas applicable sur ma base....
Je ne comprends vraiment pas d'autant plus que les "update" et "insert" marchent parfaitement bien....c'est uniquement une histoire de "delete" et c'est persistant...Au redémarrage de ma machine, mes enregistrements, soit disant supprimés, sont tjs présents lorsque je visualise ma base à travers mon application. Alors qu'en ouvrant celle-ci, dans l'explorateurSQL ou dans Excel, je ne les ai bel et bien supprimés...
Je ne comprend pas tout, ca doit être une stupide betise c'est pourkoi j'en demande votre aide !!!!
Ced.
barttabac
Messages postés3Date d'inscriptionmercredi 7 mai 2003StatutMembreDernière intervention11 mai 2003 11 mai 2003 à 21:59
Je viens de trouver mon problème et pour en faire profiter ceux que ca pourrait intéresser....en voici la stupide erreur.
En fait sur mon composant ADOConnection, je crée ma chaine de connexion. C'est une source de données fichier...etc... ensuite une fenêtre "Installation ODBC pour DBASE" s'ouvre et c'est ici que subsiste la subtilité. En cliquant sur "Options>>" en bas à droite, une checkbox est cochée et c'est "Affichage des lignes supprimées"....
Voilà donc pourquoi je visualisais toujours mes données (qui devaient être supprimées) sous mon application mais non pas sous l'explorateurSQL...
En espérant que cela puisse aider ceux qui seront un jour dans ce cas là !!!!
Ced.
grosdave653
Messages postés16Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention29 juillet 2005 12 juil. 2005 à 15:34
J'ai le même souci que toi pour la suppression d'enregistrements mais je n'utilise pas de composant ADOConnection. Je pense d'ailleurs que la solution que tu donnes est fausse. En effet lorsque tu décoche "Affichage des lignes supprimées", certes tu ne les verras plus, mais tu aurais du tilter que lorsque l'on peut les voir c'est qu'ils existent toujours quelque part ... LOGIQUE
Le problème vient du fait que sur Dbase pour supprimé les enregistrements il faut faire PACK de la table. Bon ta question date un peu aujourdhui mais regarde le fichier .dbf de la table sur laquelle tu fais tes delete, elle doit occuper une taille anormalement grande sur ton disque puisque tous les deletes que tu as fait m'on surement jamais été pris en compte.
Vu que cette question date, est ce que tu as maintenant la vrai solution ? A savoir comment faire un COMMIT, ou un PACK sur la table a partir de delphi ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_curie
Messages postés5Date d'inscriptionmardi 12 décembre 2000StatutMembreDernière intervention12 août 2010 7 août 2008 à 18:07
Salut
En DB4 la commande DELETE efface virtuellement les records mais pas physiquement (si on peut dire)
en fait c est la commande PACK qui elimine definitivement les records prealablement effaces par DELETE
De ce fait comment execute la commande PACK en DELPHI