Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/03/2011, 21h33   #1
Invité régulier
 
Inscription : février 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 17
Points : 7
Points : 7
Par défaut Req Suppression des n Premiers enregistrement.

Messieurs bonsoir,

Je souhaite supprimer les 5 premiers (par exemple) enregistrements d'une table Access, sachant que la comande sera lancée dans une procédure excel, comme par exemple:

Code :
Docmd.SQL DELETE FROM etc
Supposons que m'a table s'appelle Table1 et que j'ai 1 seul champ intitulé [B]Champ1[B] avec 10 enregistrements.

Je souhaite effacer les 5 premiers tout simplement.

Est-ce possible?

Merci par avance.

cdt,
JP
Brasileiro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 22h21   #2
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Salut,

Tu peux faire une sous-requête avec les 5 premiers enregistrements de ta table en utilisant

Code sql :
1
2
SELECT Top 5 champ1
...

Et après tu fais un delete sur cette sous-requête

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 23h13   #3
Invité régulier
 
Inscription : février 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 17
Points : 7
Points : 7
Merci User mais il faudra encore un petit coup demain.

J'ai essayer de combiné de plusieur façon mais la bonne je n'ai pas trouvé. lol

C'est comme ça?

Code :
1
2
3
4
DELETE table1.*
FROM Table1
WHERE (SELECT TOP 5 Table1.A
FROM Table1);
Merci!
Brasileiro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 10h04   #4
Invité régulier
 
Inscription : février 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 17
Points : 7
Points : 7
Hello,

Je ne comprends pas le souci.

DELETE * FROM Table1
WHERE table1.A = (SELECT TOP 5 table1.A FROM Table1);

il m'affiche,
"Cette sous requete peut retourner au plus un enregistrement"

HELP!!
Brasileiro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 11h05   #5
Invité régulier
 
Inscription : février 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 17
Points : 7
Points : 7
Bon, j'ai réussi à faire en sorte que le code ci-dessous marche:

Code :
1
2
3
4
5
DELETE * 
FROM Table1
WHERE table1.A IN
           (SELECT TOP 5 table1.A FROM Table1
           );
Le souci c'est que je viens de constater que si dans mon champ "A" j'ai des doublons, alors ils seront aussi supprimés.

Exemple:
Le nom THOMAS est parmi le TOP 5 et il se répète ver le 100ème enregistrement.
Avec le code du dessus, ma requête de suppression, supprimera non pas 5 enregistrement, mais 6!!

Ce que je souhaite c'est quelque choses comme:

DELETE TOP (5) FROM Table1... (mais cela fonctionne que avec MySql et nom Access 2003)

Merci
Brasileiro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 12h32   #6
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 258
Points : 5 258
Salut,

Code sql :
1
2
DELETE *
FROM (SELECT Top 5 Champ1  FROM Table1)

Tu peux aussi enregistrer la sous-requête:

Code sql :
SELECT Top 1 Champ1  FROM Table1

dans "req1".

Et après faire :

Code sql :
1
2
DELETE *
FROM req1

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 14h24   #7
Invité régulier
 
Inscription : février 2011
Messages : 17
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 17
Points : 7
Points : 7
Par défaut Got it!

Merci User!

c'est parfait!

Ci-dessous le code final. J'ai rajouté un ORDER BY car ça mélangeait tout.


Code :
1
2
3
Dim strSQL As String
strSQL = "DELETE * FROM (SELECT Top 5 A FROM Table1 ORDER BY Table1.A ASC)"
CurrentDb.Execute strSQL
Bonne utilisation!.

Cdt,
JP
Brasileiro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h17.


 
 
 
 
Partenaires

Hébergement Web