voilà,j'ai une table détail et je veux supprimer tous les enregistrements de cette table d'un seul coup.Comment faire svp?
voilà,j'ai une table détail et je veux supprimer tous les enregistrements de cette table d'un seul coup.Comment faire svp?
Salut.
N'ayant pas connaissance du techno utilisé; je dirais que tu devrais execute cette requête sur cette table.
Sinon, tu devrais parcourir ta table et exécuter la méthode Delete sur chaque enregistrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DELETE FROM TATABLE
A+
On progresse .....
voici le code que j'ai écrit:
mais il ne supprime qu'un seul enregistrement c'est tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DM.TNotes.Edit; DM.TNotes.First; DM.TNotes.Delete; DM.TNotes.Next;
Essaie un peu ceci. Il fut quand même parcourir les enregistrements et les supprimer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 With DM.TNotes do begin First; While Not eof do begin Delete; Next; end; end;
On progresse .....
voila tout mon code:
je fais d'abord un filtre sur la table "notes" et puis je supprime les enregistrements trouvés en suivant le filtre effectué:
mais il efface 2 enregistrements seulement!???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 DM.TNotes.Filtered:=false; DM.TNotes.Filter:='Num_classe = '''+(DBEdit1.Text)+''''; DM.TNotes.Filtered:=true; if messageDlg('Etes-vous sûr de vouloir supprimer cette classe?',mtinformation, [mbOK,mbCancel],0)=mrOK then begin With DM.TNotes do begin First; While Not eof do begin Delete; Next; end; end; end; end;
Je vais te donner ma methode :
PS : Il faut ptet changer un ou deux trucs en fonction du composant Query utilisé vu que je n'ia pas Delphi sous la main .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 With TQuery.Create(Nil) do try //Ici paramétrage des connextion ou Alias //generation de la requête. Supposons que ta table s'appelle TNOTES SQL.Add('DELETE FROM TNOTES'); SQL.Add('Where Num_classe = :PNUM_CLASSE'); //Affectation du paramètre ParamByName('PNUM_CLASSE').AsString := DBEdit1.Text; //Execution de la requête ExecSQL; finally Free; End;
A+
On progresse .....
Salut
Simplement parce que le Next est en trop dans la boucle.
Mais la méthode la plus simple et surtout plus efficace est celle présentée par Andry via SQL.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part DELETE FROM TA_TABLE WHERE Condition;
@+ Claudius
:yaisse2:
ça marche à merveille!
Merci beaucoup à vous tous surtout à toi Andy et à toi aussi Cl@udius.
bon courage mes amis!
a+
szalut .
malgrés cette discussion et marqué comme résolus,mais un petit ceci qui me casse la tete.j'ai tombé dans le meme probléme ,je veut vider la table entiere
mon code et le suivant:
mais le message suivant s'affiche ,pourquoi ??je ne sais pas!! :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 begin t1.First; While Not (t1. eof )do begin t1. Delete; t1. Next; end; end;
""trop de ligne sont affecté par la modification"
sachant que je veut vider ma table sans passé par le SQL comme au dessus,je veut le vider par code comme dans mon code.
merci beacoup pour vous aides.
cordialement rec82.
Salut;
afin de supprimer les enregistrements d'une table et si tu fais ça dans une boucle tu n'as pas besoin du Next le Delete se positionne automatiquement sur l'enregistrement suivant sinon tu aura toujours "n/2" enregistrements supprimés en considérant que "n"est le nombre d'enregisrements de ta table.
Bonne chance.
Bon courage ou Bonne Chance (selon le contexte)
Mon blog sur WordPress
salut .
j'ai essayé avec adoquery mais pas de resultat un message s'affiche:
"command text does not return a result set".
malgrés ma table n'est pas vide.
mon code est :
sachant que j'utilise delphi 6 et access 2003.
Code : Sélectionner tout - Visualiser dans une fenêtre à part delete * from recap
merccccccccccccccccccccccccccccci beacoup.
rec82 cordialement.
Dans le cas ou tu utilise un AdoQuery,
- utilise la methode ExecSQL dans le cas d'un Insert/Update/Delete.
- utilise Open pour ramener les records.
Mais dans ton cas, un ADoCommand suffit amplement
Courage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 with TADOCommand.Create(Nil) do try Connection := TonADOConnection; CommandText := 'Delete from recap';// pas Delete * from recap try Execute; except //Ici la gestion en cas d'erreur. end; finally Free; end;
On progresse .....
Je crois que Andry a bien fait preuve de puissance SQL et protection du code.
sauf si ta question est autre le code de Andry et plus que satisfaisant, tien nous au courant.
Bonne chance.
Bon courage ou Bonne Chance (selon le contexte)
Mon blog sur WordPress
merciiiiiiiiiiiiiiiii beacoup andry,just-soft ça marche trés bien.
merci autre fois,a toute l'équipe developpez.com.
cordialement.
Et pourquoi ne pas avoir fait tout simplement un EmptyTable sur la table
Jeankiki
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 taTable.EmptyTable;
salut.
ma table est une adotable,je pense que emptytable n'existe pas avc adotable.
cordialement.
ça ce qu'on appel un forum d'entre-aide ...vraiment je suis très ému..bravo tout le monde.
Pour rec82 en complément à la réponse de Claudius , la boucle s'écrit simplement
Mais le plus important, il faut mettre une clé primaire qui identifie de manière unique un enregistrement, indispensable pour un Delete via ADO ... sinon on a le message "trop d'enreg ..."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 begin t1.First; While not t1.IsEmpty do t1.Delete; ///Passe au suivant et si c'est le dernier qui est supprimé cela mets BOF et EOF à True end;
A part ça, le SQL c'est toujours mieux, et plus facile à tracer ...
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager