Est il possible de faire un delete row ? [Résolu]

Signaler
Messages postés
40
Date d'inscription
dimanche 30 janvier 2005
Statut
Membre
Dernière intervention
17 août 2007
-
Messages postés
40
Date d'inscription
dimanche 30 janvier 2005
Statut
Membre
Dernière intervention
17 août 2007
-
bonjour a tous,

voila je me pose un certaine question comme vous l'avez pu voir si il y existe
une possibilité de faire dans un recordset ou si il existe une fonction qui
permet d'effacer un enregistrement dans une table.

Je vous entend déjà dire que je suis nulle...

j'ai donc essayé un recordset et avec l'aide d'une requête SQL j'ai effacer
cette ligne dans ma table. (donc j'y suis arrivée)

voici mon code :



Set rs = CurrentDb.OpenRecordset(Connexion, dbOpenDynaset)


Set rst = CurrentDb.OpenRecordset(Deconnexion, dbOpenDynaset)

sql3 = " delete from Connexion where
Num_ip_uti_co '" & a & "' and Num_ip_site_co '"
& b & "' and Heure_début_co= '" & c & "' "

sql2
"delete from Deconnexion where Num_ip_uti_deco '" & d &
"' and Num_ip_site_deco = '" & e & "' and
Heure_fin_deco= '" & f & "' "






DoCmd.RunSQL
sql2

DoCmd.RunSQL sql3



<!--[if !supportLineBreakNewLine]-->






Ce code marche et me permet
d’effacer l’enregistrement voulu.

Mon problème et que je voudrais
faire une boucle qui revienne a chaque fois sur le premier enregistrement de la
table apres avoir suprimmer un enregistrement. (desolée je ne m’exprime pas tres bien )




Je vous montre mon code ce sera
plus compréhensible :


































Set rs =
CurrentDb.OpenRecordset("Connexion", dbOpenDynaset)

Set rst
= CurrentDb.OpenRecordset(Ssql, dbOpenDynaset)

Do While Not rs.EOF

Do While
Not rst.EOF

Rs.movefirst 'pour se positionner toujours sur le premier enregistrement de ma table

Rst.movefirst

a =
rs.Fields(1) 'je prend la valeur de la premiere colonne qu premier enregistrement

b =
rs.Fields(2)

c =
rs.Fields(3)

d =
rst.Fields(1)

e =
rst.Fields(2)

f =
rst.Fields(3)

If a
d And b e Then

CurrentDb.Execute
("INSERT INTO CoDeco( Num_ip_uti, Num_ip_site,Heure_début_connexion,Heure_fin_connexion,Nom_site ) VALUES ('" & a
& "', '" & b & "', '" & c & "',
'" & f & "', ' '); ")







sql3
" delete from Connexion where Num_ip_uti_co '" & a &
"' and Num_ip_site_co = '" & b & "' and Heure_début_co=
'" & c & "' "

sql2
"delete from Deconnexion where Num_ip_uti_deco '" & d &
"' and Num_ip_site_deco = '" & e & "' and Heure_fin_deco=
'" & f & "' "







DoCmd.RunSQL
sql2

DoCmd.RunSQL sql3



end if



loop

loop







voila le truc c'est quand il a fait un fois la boucle et qu'il
revien se posisioner sur "a" pour extraire les données de fields (1) un
message d'erreur aparait et me dit que l'enregistrement a deja était
effacé.

je ne comprend pas car s'il est effacer c'est pas pour sa qu'il ne reste pas d'autre enregistrement dans ma table...



donc existe t'il une autr e manière de faire ? j'ai entendu parlé d'un delete row ..



je vous remerci d'avance






<!--[if gte vml 1]>

















<![endif]--><!--[if !vml]-->








piou ('<>')

3 réponses

Messages postés
40
Date d'inscription
dimanche 30 janvier 2005
Statut
Membre
Dernière intervention
17 août 2007

salut !

non ta manière de faire ne fonctionne pas avec mon code, alors tampis je vais faire comme ca :



rst.Edit

rst.Fields(1) = " "

rst.Fields(2) = " "

rst.Fields(3) = " "

rst.Update



et essayer de me debrouiller pour la suite avec ce code.



merci

piou ('<>')
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 82 internautes nous ont dit merci ce mois-ci

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Salut,

Je ne comprend pas trop ton double do while avec tes movefirst en début, ça peut devenir des boucles infinies.

Pour moi, ça devrait plutôt être quelque chose de ce genre :

do while not rs.eof
do while not rst.eof
'...
rst.movenext
loop
if rst.recordcount >0 then
rst.movefirst
else
exit do
endif
rs.movenext
loop

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
40
Date d'inscription
dimanche 30 janvier 2005
Statut
Membre
Dernière intervention
17 août 2007

merci de m'avaoir répondu canislupus.
j'ai deux do while car en fait ce que je veux faire c'est comparer des enregistrement deux tabales differente mais a part deux do while je ne voyai pas comment faire.
je ne suis pas chez moi en ce moment donc je ne peux pas tester ton code mais il m'a l'air assez bien pour mon problème je testerais et je te dirais.
merci encore



piou ('<>')