Accueil > > > SUPPRIMER LES DOUBLONS D'UNE TABLE (VBA ACCESS)
SUPPRIMER LES DOUBLONS D'UNE TABLE (VBA ACCESS)
Information sur la source
Description
Voici un petti code très simple qui permet de suppimer totu les doublons dans une table pour avoir seulement 1 fois les valeurs Ceci vérifie réellement les doublons, puisqu'une seule valeur est différente, alors toute la ligne est considéré comme pas doublé l'astuce est de détecter les doublons, puis les supprimer et ré-écrire la ligne, mais non doublé tout le code doit-être dans un module dans la base de donnés access
Source
- Option Compare Database
- Option Explicit
-
- Dim tableau() As String
- Dim typeChamps() As String
-
- Private Sub Tb_Horaire_Enr_AVG()
- 'initlise les tableaux
- ReDim tableau(0)
- ReDim typeChamps(0)
-
- 'On écris les champs de la requête
- add "id"
- add "Avg"
- add "HeureDebut", "#"
- add "HeureFin", "#"
- add "commentaire"
-
- 'Puis on enlève
- EneleverDoublons "Tb_Horaire_Enr_AVG"
- MsgBox "teminé"
- End Sub
-
- Private Sub Tb_Horaire_Enr_AVG_calculer()
- ReDim tableau(0)
- ReDim typeChamps(0)
-
- add "id"
- add "date", "#"
- add "Job"
- add "Employe"
- add "Avg"
- add "QTE", "'"
-
- EneleverDoublons "Tb_Horaire_Enr_AVG_calculer"
- MsgBox "teminé"
- End Sub
-
-
- Private Sub Tb_Horaire_Enr_Employe()
- ReDim tableau(0)
- ReDim typeChamps(0)
-
- add "id"
- add "Employe"
- add "Avg"
- add "Edebut", "#"
- add "Efin", "#"
- add "Sdebut", "#"
- add "Sfin", "#"
- add "commentaire"
- add "payer", "bool"
- add "tempPayé", "#"
- add "valider", "bool"
- add "salaire"
- add "prime40Hrs"
-
- EneleverDoublons "Tb_Horaire_Enr_Employe"
- MsgBox "teminé"
- End Sub
-
- Private Sub add(champ As String, Optional typ As String = "")
- If champ <> "id" Then
- ReDim Preserve tableau(UBound(tableau) + 1)
- ReDim Preserve typeChamps(UBound(typeChamps) + 1)
- End If
- tableau(UBound(tableau)) = champ
- typeChamps(UBound(typeChamps)) = typ
- End Sub
-
- Private Sub EneleverDoublons(table As String)
- Dim rst As Recordset
- Dim i As Integer
- Dim champs As String
- Dim where As String
- Dim valeur As String
-
- 'On construit la requete
- For i = 0 To UBound(tableau)
- champs = champs & " , " & tableau(i)
- Next i
- champs = Mid(champs, 4)
-
- Set rst = CurrentDb.OpenRecordset("select count(*)," & champs & " from " & table & " GROUP BY " & champs & " having count(*) > 1")
- While Not rst.EOF
- where = ""
- valeur = ""
- For i = 0 To UBound(tableau)
-
- If typeChamps(i) = "bool" Then
- where = where & " and " & tableau(i) & " = " & IIf(rst(i + 1).Value, "true", "false")
- valeur = valeur & "," & IIf(rst(i + 1).Value, "true", "false")
- Else
- If IsNull(rst(i + 1).Value) Then
- where = where & " and " & tableau(i) & " = null"
- valeur = valeur & ",null"
- Else
- where = where & " and " & tableau(i) & " = " & typeChamps(i) & rst(i + 1).Value & typeChamps(i)
- valeur = valeur & "," & typeChamps(i) & rst(i + 1).Value & typeChamps(i)
- End If
- End If
- Next i
- where = Mid(where, 6)
- valeur = Mid(valeur, 2)
- CurrentDb.Execute "delete * from " & table & " where " & where
- CurrentDb.Execute "insert into " & table & " values(" & valeur & ")"
- rst.MoveNext
- Wend
- End Sub
-
-
-
Option Compare Database
Option Explicit
Dim tableau() As String
Dim typeChamps() As String
Private Sub Tb_Horaire_Enr_AVG()
'initlise les tableaux
ReDim tableau(0)
ReDim typeChamps(0)
'On écris les champs de la requête
add "id"
add "Avg"
add "HeureDebut", "#"
add "HeureFin", "#"
add "commentaire"
'Puis on enlève
EneleverDoublons "Tb_Horaire_Enr_AVG"
MsgBox "teminé"
End Sub
Private Sub Tb_Horaire_Enr_AVG_calculer()
ReDim tableau(0)
ReDim typeChamps(0)
add "id"
add "date", "#"
add "Job"
add "Employe"
add "Avg"
add "QTE", "'"
EneleverDoublons "Tb_Horaire_Enr_AVG_calculer"
MsgBox "teminé"
End Sub
Private Sub Tb_Horaire_Enr_Employe()
ReDim tableau(0)
ReDim typeChamps(0)
add "id"
add "Employe"
add "Avg"
add "Edebut", "#"
add "Efin", "#"
add "Sdebut", "#"
add "Sfin", "#"
add "commentaire"
add "payer", "bool"
add "tempPayé", "#"
add "valider", "bool"
add "salaire"
add "prime40Hrs"
EneleverDoublons "Tb_Horaire_Enr_Employe"
MsgBox "teminé"
End Sub
Private Sub add(champ As String, Optional typ As String = "")
If champ <> "id" Then
ReDim Preserve tableau(UBound(tableau) + 1)
ReDim Preserve typeChamps(UBound(typeChamps) + 1)
End If
tableau(UBound(tableau)) = champ
typeChamps(UBound(typeChamps)) = typ
End Sub
Private Sub EneleverDoublons(table As String)
Dim rst As Recordset
Dim i As Integer
Dim champs As String
Dim where As String
Dim valeur As String
'On construit la requete
For i = 0 To UBound(tableau)
champs = champs & " , " & tableau(i)
Next i
champs = Mid(champs, 4)
Set rst = CurrentDb.OpenRecordset("select count(*)," & champs & " from " & table & " GROUP BY " & champs & " having count(*) > 1")
While Not rst.EOF
where = ""
valeur = ""
For i = 0 To UBound(tableau)
If typeChamps(i) = "bool" Then
where = where & " and " & tableau(i) & " = " & IIf(rst(i + 1).Value, "true", "false")
valeur = valeur & "," & IIf(rst(i + 1).Value, "true", "false")
Else
If IsNull(rst(i + 1).Value) Then
where = where & " and " & tableau(i) & " = null"
valeur = valeur & ",null"
Else
where = where & " and " & tableau(i) & " = " & typeChamps(i) & rst(i + 1).Value & typeChamps(i)
valeur = valeur & "," & typeChamps(i) & rst(i + 1).Value & typeChamps(i)
End If
End If
Next i
where = Mid(where, 6)
valeur = Mid(valeur, 2)
CurrentDb.Execute "delete * from " & table & " where " & where
CurrentDb.Execute "insert into " & table & " values(" & valeur & ")"
rst.MoveNext
Wend
End Sub
Conclusion
on envoi aussi bool pour les valeur boolean et # ou ' pour envoyer au bon format dans la base de donnée lors de la ré-écriture de la ligne
Historique
- 29 juillet 2005 18:34:40 :
- modification du titre
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Supprimer un table dans une basse de donnée ACCESS 2000 [ par DeepImpact ]
Bonjour a tousVoila je voudrais savoir quelle est la commande permettant de supprimer une table d'une base de donnée via VB.Merci d'avance :)
Supprimer une ligne d une table Access... [ par Jay1063 ]
Salut a tous,J'ai un petit souci plutot VB je pense. J'aimerais supprimer une ligne d'une table Access pour la copier dans une autre (deux tables iden
Erreur entre VB6 et Access [ par kephset ]
Je développe une application VB avec une base de données sous et je suis confronté à deux problèmes venant de messages d'erreurs à cause de problèmes
supprimer la barre de menu d'access [ par thguillon ]
Bonjour,Quelle est la ligne de commande pour supprimer la barre de menu de Access (Fichier, Edition, Affichage, Insertion...) à partir de VB.Je pensai
help message delete access 2000 [ par Gauthier62 ]
Bonjour a tous, je realse actuellement un programme sous access 2000je dois supprimer des enregistrement de la base de donnees, mais a chaque fois, le
vb access : supprimer sélection avec bouton [ par Enaira ]
SalutJ'ai un bouton dans un formulaire, et je voudrais qu'il me supprime ce que j'ai sélectionné dans le sous-formulaire (qui est en mode "feuille de
Suppression de la totalité des tables dans access ? [ par Tche ]
Bonjour, je suis etudiant en bts info et je suis en stage et je dois devellopper un petit programme sur access.Le problème c'est que je ne peux pas av
supprimer une table dans une autre base Access (vba) [ par madmax34 ]
Hello, je cherche une commande vb me permettant de supprimer une table attachée. Je précise, pas le lien mais bien la table situé dans une base distan
Doublon access 2 clé primaire [ par rvdw ]
Salut!Avis au pro access, car je rame!j'ai créé une table avec 2 clé primaire (champA,ChampB), dans le but d'évité les doublons dans ces 2 champsDans
Supprimer un enregistrement dans Access [ par zolio ]
Bonjour,Je fais un programme qui affiche des sous-catégories en fonctions de la catégories choisie en dessusCela fonctionne bienLe problème c'est pour
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|