Effacer une ligne dans la base de donnée

Résolu
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 - 4 août 2006 à 16:05
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007 - 6 août 2006 à 17:07
Bonjour , je voudrais savoir comment on fait pour effacer une ligne dans une base de donnée

c'est a dir par exemple que si j'ai 10 lignes dans la base de donnee et que je veux effacer la 5iem
comment je doit faire pour qu'il enleve la 5iem et laisse le reste

Merci

4 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
5 août 2006 à 00:10
Salut,


D'une part, tu pourrais empêcher qu'il y ait des doublons si tu
changeais les propriétés de certains de tes champs en spécifiant "Sans
doublon"


Pour effacer avec DAO, tu dois trouver l'enregistrement avec un Select, puis l'effacer avec Delete


'Faire un Select incluant tous les champs à vérifier

Si c'est du texte, il faut mettre des apostrophes autour des valeurs.
Si c'est des dates, il faut mettre des dièses #. Si c'est des nombres
tu ne mets rien. Ici j'ai écris ChampX à remplacer par les noms de tes
champs.
Set rs = db.OpenRecordset("Select * From caisse1 where Champ1= 'toto' and Champ2 = 'a' and Champ3 = 'b'")
If rs.recordcount > 0 then rs.delete ' si Recordcount est plus grand que 0 c'est qu'un enregistrement a été trouvé et on l'efface

Else

msgbox "Aucun enregistrement trouvé"

End if

en espérant que ça puisse t'aider un peu

MPi
3
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
6 août 2006 à 17:07
Pour éliminer tous les doublons d'une table, tu peux utiliser 4 ordres SQL. Je crois que c'est le plus simple et le plus rapide :



Dim bdd As DAO.Database
  Set bdd = OpenDatabase("c:\temp\bd1.mdb")
  ' on crée une table tempo sans les doublons
  bdd.Execute "SELECT DISTINCT * INTO TaTableTmp FROM TaTable"
  ' on efface le contenu de la table de départ
  bdd.Execute "DELETE FROM TaTable"
  ' on retransfère le contenu de la table tempo dans la table de départ
  bdd.Execute "INSERT INTO TaTable SELECT * FROM TaTableTmp"
  ' on détruit la table tempo
  bdd.Execute "DROP TABLE TaTableTmp"


Il existe d'autres solutions à base de tableaux, compteurs et autres astuces plus ou moins alambiquées. Moi je préfère celle-là. Il parait même qu'on peut faire ça en une seule requete mais je ne sais pas encore comment.
3
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
4 août 2006 à 16:10
Salut, sans plus de précisions je dirais :
cnn.Execute "DELETE FROM TaTable WHERE TonCritere"
0
petiflamand Messages postés 675 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 26 mai 2013 1
4 août 2006 à 16:23
bonjour ,

j'utilise :
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = OpenDatabase(App.Path & "\manager.mdb")
Set rs = db.OpenRecordset("caisse1")

dans la table caisse j'ai  mes champs 1,2,3,4,5,6 on vas dir
donc je doit faire comment ?? , je suis vraiment novice de novice
si j'ai 5 ligne
         1          2           3           4          5
1    toto         a            b            c         d 
2    toto         a            b            c         d
3    titi           e            f              g         h
4    titi           i             j               k         l
5    tata         r            t               j           j
et je veux suprimer la ligne 2(qui est la meme que la 1) , vous pouvez me le dire svp Merci
0