OVH Cloud OVH Cloud

requête suppression

33 réponses
Avatar
Pascal
bonjour à tous et toutes,

j' ai 2 tables que nous nommerons table1 et table2
dans chaque table: 3 champs de même nom : col1 col2 col3 de type
numérique entier

je désirerai faire une requête suppression avec ces critères:
lecture 1er enregistrement table2
comparaison de col1 col2 col3 de la table 2 avec l'enregistrement de la
table1 en clair
si dans la table2 j'ai 1 ou 2 ou 3 chiffre identique a table1, il supprime
l'enregistrement de la table1 et ainsi de suite j'usque fin table2
je vous en remercie d'avance
Pascal

10 réponses

1 2 3 4
Avatar
Pascal
Re,
j'ai un message d'erreur:
"Vous avez écrit une sous requête pouvant renvoyer + d'un champs sans
utiliser le mot resevé EXISTS dans la clause FORM de la requête principale.
Revisez l'instruction SELECT pour obtenir un seul champ"

Ce critère je l'ai placé bien évidemment dans la requête table :table1
champ:col1
et n'ai rien mis dans col2, col3
ou est l'erreur?
Merci
Pascal


"Raymond [mvp]" a écrit dans le message de
news:
on aurait pu faire une boucle dans une fonction vba ce qui ferait moins
d'instructions dans la requête mais c'est pareil.
ces critères fonctionnent (à vérifier quand même) avec les noms réels de
tes

champs, tu peux l'inclure dans ta requête.
remplace delete par select pour la requête sélection
ce n'est pas = 2 mais >=2 , teste que le nombre d'égalités soit >= 2


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:%
merci Raymond,
désolé comme suis vraiment débutant en Access quant tu dis en linéaire
késako?
1)je peux mettre ces critères texto dans le critère de ma requête faite
à


l'aide de l'assistant
2)si je veux maintenant une requête selection le mot DELETE, je le
remplace

par quoi? SELECT?
3)le =2 veut'il dire si 2 numéros trouvé? si par ex =5 ce serait 5
numéros


trouvé?
désolé d'abuser, mais quant on trouve une bible on ne la lache plus!
merci de ton aide
Pascal

"Raymond [mvp]" a écrit dans le message de
news:
Tu peux faire ceci en linéaire:
DELETE table1.*
FROM table1 INNER JOIN Table2 ON table1.Numéro = Table2.Numéro
WHERE





(((Abs(table1!col1=table2!col1)+Abs(table1!col1=table2!col2)+Abs(table1!col1






=table2!col3)+Abs(table1!col2=table2!col1)+Abs(table1!col2=table2!col2)+Abs(






table1!col2=table2!col3)+Abs(table1!col3=table2!col1)+Abs(table1!col3=table2

!col2)+Abs(table1!col3=table2!col3))>=2));


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:O3ugX1%
bonjour maître,
vous avez entièrement raison
c'est 2 ou 3
et non 1 ou 2 ou 3
vraiment désolé
Pascal














Avatar
Raymond [mvp]
on n'a jamais parlé de requête principale ou sous-requête.
la requête que je t'ai donnée fonctionne en autonome et devrait se suffire .

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:
Re,
j'ai un message d'erreur:
"Vous avez écrit une sous requête pouvant renvoyer + d'un champs sans
utiliser le mot resevé EXISTS dans la clause FORM de la requête
principale.

Revisez l'instruction SELECT pour obtenir un seul champ"

Ce critère je l'ai placé bien évidemment dans la requête table :table1
champ:col1
et n'ai rien mis dans col2, col3
ou est l'erreur?
Merci
Pascal


Avatar
Pascal
bonjour,
ben oui! à chacun son intelligence!
c'est comme cela que je vais apprendre
merci à toi
Pascal

"Raymond [mvp]" a écrit dans le message de
news:%
on n'a jamais parlé de requête principale ou sous-requête.
la requête que je t'ai donnée fonctionne en autonome et devrait se suffire
.


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:
Re,
j'ai un message d'erreur:
"Vous avez écrit une sous requête pouvant renvoyer + d'un champs sans
utiliser le mot resevé EXISTS dans la clause FORM de la requête
principale.

Revisez l'instruction SELECT pour obtenir un seul champ"

Ce critère je l'ai placé bien évidemment dans la requête table :table1
champ:col1
et n'ai rien mis dans col2, col3
ou est l'erreur?
Merci
Pascal






Avatar
Pascal
bonjour raymond,
je sais suis collant, mais probablement le dernière fois que je t'ennuie
avec cela
le code que tu m'as donné, je crée une requête en mode SQL sans importer de
table
je colle le code
à l'excécution les réponses données ne compare apparemment que le premier
enregistrement de table2
, il me sort toujours le premier enregistrement de la table1 et pas les
suivants, il devrait me donner au moins (dans le cadre de mon essai) 5
enregeistrements
Une idée?
merci
Pascal

"Raymond [mvp]" a écrit dans le message de
news:%
on n'a jamais parlé de requête principale ou sous-requête.
la requête que je t'ai donnée fonctionne en autonome et devrait se suffire
.


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:
Re,
j'ai un message d'erreur:
"Vous avez écrit une sous requête pouvant renvoyer + d'un champs sans
utiliser le mot resevé EXISTS dans la clause FORM de la requête
principale.

Revisez l'instruction SELECT pour obtenir un seul champ"

Ce critère je l'ai placé bien évidemment dans la requête table :table1
champ:col1
et n'ai rien mis dans col2, col3
ou est l'erreur?
Merci
Pascal






Avatar
Raymond [mvp]
j'avais fait un essai rapide et ça marchait, maintenant sur du réel ?
passe moi ta requête et ta table dans une base vierge que je regarde.
en zip obligatoire et en enlevant le XYZ. dans l'adresse.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:
bonjour raymond,
je sais suis collant, mais probablement le dernière fois que je t'ennuie
avec cela
le code que tu m'as donné, je crée une requête en mode SQL sans importer
de

table
je colle le code
à l'excécution les réponses données ne compare apparemment que le premier
enregistrement de table2
, il me sort toujours le premier enregistrement de la table1 et pas les
suivants, il devrait me donner au moins (dans le cadre de mon essai) 5
enregeistrements
Une idée?
merci
Pascal


Avatar
Pascal
merci Raymond je te l'envoie
Pascal

"Raymond [mvp]" a écrit dans le message de
news:
j'avais fait un essai rapide et ça marchait, maintenant sur du réel ?
passe moi ta requête et ta table dans une base vierge que je regarde.
en zip obligatoire et en enlevant le XYZ. dans l'adresse.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:
bonjour raymond,
je sais suis collant, mais probablement le dernière fois que je t'ennuie
avec cela
le code que tu m'as donné, je crée une requête en mode SQL sans importer
de

table
je colle le code
à l'excécution les réponses données ne compare apparemment que le
premier


enregistrement de table2
, il me sort toujours le premier enregistrement de la table1 et pas les
suivants, il devrait me donner au moins (dans le cadre de mon essai) 5
enregeistrements
Une idée?
merci
Pascal






Avatar
Raymond [mvp]
toujours rien reçu à 19:40

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:%
merci Raymond je te l'envoie
Pascal


Avatar
Pascal
ah! pourtant bien envoyé
je réexpédie
Pascal

"Raymond [mvp]" a écrit dans le message de
news:u3y$
toujours rien reçu à 19:40

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:%
merci Raymond je te l'envoie
Pascal






Avatar
Raymond [mvp]
reçu il y a 5 minutes.
c'est normal qu'il n'y ait qu'un seul enregistrement traité.
il y a relation entre les deux tables sur les deux clés primaires qui sont
toutes les deux des numauto, c'est impossible d'avoir ce type de relation.
il n'y a donc que les enregistrements avec clé à 1 qui sont traités.
il faut refaire les relations entre tes deux tables pour qu'elle reflêtent
la
réalité.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:
ah! pourtant bien envoyé
je réexpédie
Pascal



Avatar
Pascal
salut, oui pour toi c'est évident!
concrètement je fais comment? quel type de relation?
Pascal
"Raymond [mvp]" a écrit dans le message de
news:%
reçu il y a 5 minutes.
c'est normal qu'il n'y ait qu'un seul enregistrement traité.
il y a relation entre les deux tables sur les deux clés primaires qui sont
toutes les deux des numauto, c'est impossible d'avoir ce type de relation.
il n'y a donc que les enregistrements avec clé à 1 qui sont traités.
il faut refaire les relations entre tes deux tables pour qu'elle reflêtent
la
réalité.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Pascal" a écrit dans le message de
news:
ah! pourtant bien envoyé
je réexpédie
Pascal







1 2 3 4