[access] requête suppression
peram
-
flo -
flo -
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
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:
- Requête de suppression access
- Forcer suppression fichier - Guide
- Suppression compte gmail - Guide
- Suppression page word - Guide
- Access appdata - Guide
- Suppression facebook - Guide
7 réponses
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.
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.
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.
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.
"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
avec la souris tu appuis sur les champs et tu les deplace où tu veux puis tu relache le bouton de la souris
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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?
On peut aussi double-cliquer sur le champ qui est alors sélectionné automatiquement.
Comment procèdes-tu pour tes requêtes habituellement?
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?
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?
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...
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...
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.
sinon par rapport à tes autres remarques on retrouve des champs en double mais c'est uniquement pour faire mes relations un-à-plusieurs.
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.
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.
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
?!