[access] requête suppression

Fermé
peram - 18 mai 2005 à 16:18
 flo - 11 mai 2011 à 17:39
Bonjour,
j'ai 5 tables:
responsable affaire : avec comme champs: nom responsable affaire
affaire : les champs : num affaire , nom responsable affaire
commande achat: les champs : num commande achat, num affaire, nom fournisseur, adresse livraison
fournisseur : les champs : nom fournisseur, contact fournisseur
produit : les champs : ref, designation, quantite, date livraison , bon a payer
le champ bon a payer est un champ à cocher (oui/non)
je souhaiterai archiver les données dont le bon a payer = oui et la date livraison <Date()-150 c'est à dire que toutes les livraisons sont antérieures à 150 jours par rapport à la date d'aujourd'hui.
actuellement j'ai fait une requête création de table pour mettre de côté ces infos et maintenant je voudrais supprimer ces données de la base (en gros que ces données ne soient présentes que dans la table que j'ai créé (appelée archivage))
c'est cette requête suppression qui me pose problème : je mets les deux champs avec cirtères et le champ num affaire (si j'arrive à supprimer ce dernier ça me supprime toutes les données asociées en aval) quand je veux exécuter la requête j'ai un message d'erreur : spécifier la table contenant les enregistrements que vous voulez supprimer.
j'ai essayé de mettre l'étoile (essai avec l'étoile de chaque table) et là j'ai un autre message : impossible de supprimer dans les tables spécifiées.
je ne connais pas grand chose pour le mode SQL mais je pourrais quand même essayer de saisir si quelqu'un me l'indique.
merci pour votre réponse
A voir également:

7 réponses

sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
18 mai 2005 à 16:34
la syntaxe pour la suppression est :

DELETE FROM ta_table WHERE 
critaires

6
j'ai essayé
et quand j'exécute ça m'ouvre une boite de dialogue :
produit.date_livraison_demandee?
je réponds <Date()-150
une nouvelle boite de dialogue:
produit.bon_a_payer?
je réponds Oui
autre boite:
Oui
je réponds Oui
et là ça me dit que ça va me supprimer 177 lignes alors que normalement ça doit m'en supprimer 60
?!
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
18 mai 2005 à 16:37
Si toutes les données à supprimer sont dans la même table et si l'opération ne dit être éxécutée qu'une seule fois, pas besoin de SQL.

Dans ta fenêtre création de requête (la même qui t'a servi à créer la nouvelle table, et en utilisant la même requête) il suffit de choisir l'option "requête suppression" en gardant les mêmes critères de tri puis de l'exécuter.
0
ça me remet : spécifier la table contenant les enregistrements que vous voulez supprimer
je ne sais plus quoi faire
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
19 mai 2005 à 00:18
Normalement, dans l'assistant création de requête, tu ajoutes la table, puis tu fais un "drag and drop" pour ajouter les champs dont tu as besoin.

La fenêtre de l'assistant spécifie dans la première ligne le nom du champ puis dans la seconde ligne le nom de la table dont il est issu.

Ensuite, tu choisis les critères que tu souhaites. Par exemple, en dessous du champ date: <date()-150

Tu peux ensuite visualiser les enregistrements sélectionnés en passant en mode feuille de données puis exécuter une requête suppression après avoir choisi cette fonction.
0
excuse moi mais je ne sais pas ce qu'est un "drag and drop".
0
sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
19 mai 2005 à 10:26
"drag and drop" c'est "cliquer puis deplacer"
avec la souris tu appuis sur les champs et tu les deplace où tu veux puis tu relache le bouton de la souris
0

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

Posez votre question
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
19 mai 2005 à 10:30
Littéralement: tirer - déposer: tu cliques sur le champ que tu veux sélectionner et tu le déposes (en maintenant le clic gauche) dans la grille.

On peut aussi double-cliquer sur le champ qui est alors sélectionné automatiquement.

Comment procèdes-tu pour tes requêtes habituellement?
0
habituellement je procède de cette manière et ça fonctionne
j'ai réessayé mais à chaque fois ça me met : Spécifier .....
j'ai l'impression que le problème vient du fait que je veux supprimer des données avec des critères posés sur des champs appartenant à une table située en aval...
qu'en penses-tu?
0
zenon Messages postés 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
19 mai 2005 à 20:44
D'après ta description tes deux critères concernent des champs qui se situent dans la même table.

Maintenant, je ne sais pas quelles sont les relations entre les tables. Peut-être y a-t-il violation de clé. En principe si c'était le cas, Access le signalerait comme tel.

As-tu vérifié si tes noms de champs ne sont pas ambigus (se retrouvent-ils dans plusieurs tables)?

Dans ta requête tu n'as bien inclus qu'une seule table?

Peut-être pourrais-tu tester avec un seul critère à la fois sur des copies de tes données...
0
mes critères sont bien dans la même table mais je voudrais supprimer en cascade les enregistrements mais vu que mes critères se trouvent en aval( c'est à dire du côté plusieurs de mes relations) je pense que c'est pour ça que ça ne foncitonne pas
sinon par rapport à tes autres remarques on retrouve des champs en double mais c'est uniquement pour faire mes relations un-à-plusieurs.
0
Pour info :

Une bonne piste pour le message "Impossible de supprimer dans les tables spécifiées" :

https://support.microsoft.com/fr-fr/help/467066

Pour moi, depuis la lecture de cet article, ça fonctionne.
0
merci ça marche en changeant à yes
0
ça marche pas pour moi...je tourne en rond depuis plusieurs heure...argggrrr
0