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

highmasterc 6 Messages postés mardi 21 septembre 2004Date d'inscription 6 février 2006 Dernière intervention - 20 janv. 2006 à 09:09 - Dernière réponse : highmasterc 6 Messages postés mardi 21 septembre 2004Date d'inscription 6 février 2006 Dernière intervention
- 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
michelatoutfox 834 Messages postés mardi 5 octobre 2004Date d'inscription 7 mai 2013 Dernière intervention - 23 janv. 2006 à 18:32
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

Merci michelatoutfox 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de michelatoutfox
rubix2 22 Messages postés jeudi 3 novembre 2005Date d'inscription 27 août 2007 Dernière intervention - 20 janv. 2006 à 14:25
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
highmasterc 6 Messages postés mardi 21 septembre 2004Date d'inscription 6 février 2006 Dernière intervention - 23 janv. 2006 à 06:08
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
highmasterc 6 Messages postés mardi 21 septembre 2004Date d'inscription 6 février 2006 Dernière intervention - 23 janv. 2006 à 06:24
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
highmasterc 6 Messages postés mardi 21 septembre 2004Date d'inscription 6 février 2006 Dernière intervention - 25 janv. 2006 à 06:11
0
Merci
Merci infiniment (^_^) le problème est réglé grâce à tes conseils avisés :P

HMC
Commenter la réponse de highmasterc

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.