SQL - "delete from" ne fonctionne pas ;'( [Résolu]

Messages postés
6
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
6 février 2006
- - Dernière réponse : highmasterc
Messages postés
6
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
6 février 2006
- 25 janv. 2006 à 06:11
Bonjour à tous. Alors voila, dans mon code, j'utilise une table nommmée table2 (c'est une "free table").
J'execute deux requêtes SQL sur cette table qui fonctionnent parfaitement : insert into et select.
Le problème c'est que ma requête "delete from table2" ne veut pas fonctionner ;'( et je ne comprends pas pourquoi, à la fin, ma table contient toujours des enregistrements.
Quelqu'un aurait - il une solution? Peut être que la synthaxe SQL VFP est différente de la syntaxe de base? je ne sais pas.
J'ai donc besoin de votre aide s'il vous plaît (^_^)

Merci
HMC
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
834
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
3
Merci
quelle que soit ta version de Foxpro, le delete sur une table va "marquer" les enregistrements à delete, et il faut en effet faire un PACK sur cette table pour les effacer physiquement ; seulement voilà, le pack necessite en effet que la table soit ouverte en exclusive.

mais tu n'as absolument pas besoind qu'ils soient effacés physiquement, tes enregistrements. avec un SET DELETED ON, les enregistrements marqué à delete ne seront plus pris en compte dans tes requètes SQL.

laisses tomber ce SET EXCLUSIVE ON, il ne t'apporteras que des ennuis et des complications.
dans tes forms de travail, tu as un set deleted on, et ça marche.

Tu te prévois simplement une routine d'effacement physique des deleted, qui peut devenir utile si tu as beaucoup de deleted dans tes fichiers (qques centaines de milliers, quoi) ; là, tu commenceras par vérifier si le fichier est disponible pour une ouverture exclusive (use monfichier exclusive), et ensuite, tu packes et tu refermes le plus vite possible pour ne pas bloquer d'autres users

au passge, j'en profite pour te dire que le init n'est pas le premier évenement, tous les objets de ton form sont déjà créés à ce moment-là, leur init a déjà eu lieu... et parmi ces objets, l'environnement de données... donc ce n'est jamais dans l'init d'un form qu'on traite un pb de data

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 153 internautes nous ont dit merci ce mois-ci

Commenter la réponse de michelatoutfox
Messages postés
22
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
27 août 2007
0
Merci
Salut,

En foxpro quand tu veux supprimer des enregistrements en utilisant l'instruction SQL DELETE FROM .... Fox pro marque simplement les enregistrements, mais il ne les supprime pas . Pour les supprimer définitivement, tu dois faire suivre ton delete par un PACK. Ce qui donne par exemple :

DELETE FROM Table WHERE Code="trucmuch"
PACK


rubix2
Commenter la réponse de rubix2
Messages postés
6
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
6 février 2006
0
Merci
Merci pour la précision. Cependant, lors de l'exécution j'ai le message : "invalid operation for the cursor" à la ligne du "PACK"
Je précise que j'utilise VFP 5 (et que je n'ai pas le choix).
D'autres avis sur la question?
Je vais en attendant chercher un peu d'informations sur cette commande mais j'apprécierai d'avoir vos conseils avisés :p

Merci
HMC
Commenter la réponse de highmasterc
Messages postés
6
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
6 février 2006
0
Merci
Me revoila (^_^)

La suppression que je voulais effectuer concernait une table libre, mais j'utilisais également un curseur dans le code.

Alors suite au message d'erreur, j'ai viré le curseur qui traînait... résultat : "file must be opened exclusively"

Je regarde dans l'aide et je trouve la commande SET EXCLUSIVE ON.

Tout content, j'essaie ca et comme on me dit que ca doit être placé avant l'ouverture de la table, je le mets donc tout au début de mon code (c'est le code de l'événement Init de la feuille). >> toujours le même message "file must be opened exclusively" ;'(

J'ai donc toujours besoin de votre aide

Re - merci
HMC
Commenter la réponse de highmasterc
Messages postés
6
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
6 février 2006
0
Merci
Merci infiniment (^_^) le problème est réglé grâce à tes conseils avisés :P

HMC
Commenter la réponse de highmasterc