SQL - "delete from" ne fonctionne pas ;'(

Résolu
highmasterc Messages postés 6 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 6 février 2006 - 20 janv. 2006 à 09:09
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
A voir également:

5 réponses

michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
23 janv. 2006 à 18:32
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
3
rubix2 Messages postés 22 Date d'inscription jeudi 3 novembre 2005 Statut Membre Dernière intervention 27 août 2007
20 janv. 2006 à 14:25
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
0
highmasterc Messages postés 6 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 6 février 2006
23 janv. 2006 à 06:08
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
0
highmasterc Messages postés 6 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 6 février 2006
23 janv. 2006 à 06:24
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Merci infiniment (^_^) le problème est réglé grâce à tes conseils avisés :P

HMC
0
Rejoignez-nous