IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Recherche doublons entre tables


Sujet :

Access

  1. #41
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour Pascalpir,

    Voici quelques questions à se poser.

    Vous parler de 3 millions d'enregistrement, cela va affecter la vérification que l'on fait avec le "Where Exits" parce que vérifier 3 millions d'enregistrements avec 17 critères va être sensiblement plus long que ce que j'avais testé. De plus si vous fonctionnez avec l'architecture frontale/dorsale et que votre dorsale est en réseau ça risque d'être lent.

    J'ai regardé votre fichier Excel des décès et il y a une ligne (ligne 18) sans nom et prénom, est-ce logique ou si ce n'est pas du "garbage"? Devrait on importer ce genre de ligne ou s'il y a une règle à établir.

    Idem pour les 2 autres fichiers, est-ce qu'il ne faudrait pas établir certaines règles. En exemple, pour une naissance est-ce qu'il ne devrait pas y avoir au minimum une date et un prénom.

    Ça nous aiderait d'avoir la structure de vos tables.

    Bonne journée

  2. #42
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    Salut,
    Si on lance après sélection du fichier Deces sans autres vérifications avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "tblDecesImport", CheminFichier, True
    on se retrouve avec une erreur 2391 (pas de correspondance avec le champ 19)
    De plus le fichier Deces pose problème avec sa colonne F qui contient une liaison externe. Étrangement en L18, la valeur est Null. Ce qui pose également un problème en dehors des nom et prénom manquants. Cette ligne ne devrait pas être présente dans le fichier.
    Dans les fichiers Naissances & Mariages la colonne NumCom n'est pas renseignée.

  3. #43
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour Pascalpir, hyperion13,

    Votre fichier Excel des décès possède une colonne de plus que l'ancien fichier.

    Voici une petite application qui importe les 3 fichiers Excel que vous aviez poster.

    J'ai changé un peu l'approche par rapport au:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "tblDecesImport", CheminFichier, True
    qui ne permettait pas de vérifier l'intégrité du fichier Excel. J'ai ajouté la suppression des doublons qu'il pourrait y avoir dans le fichier Excel ainsi que le nombres de colonnes à importer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            .Range("A1").CurrentRegion.RemoveDuplicates , Header:=xlYes
    J'ai ajouté les tests suivants: fichier décès doit avoir au moins une partie de date et un nom ou prénom, idem pour le fichier naissance et pour le fichier mariage au moins une partie de la date et au moins un nom ou prénom pour chaque conjoint. C'est dans la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Function fuGarbage(ByVal strTable As String, ByVal strDate As String, ByVal strPremierNom As String, ByVal strDeuxiemeNom As String) As Boolean
     
        Select Case strTable
            Case cDeces, cNaissance
                If strDate = "" Or strPremierNom = "" Then: fuGarbage = True
            Case cMariage
                If strDate = "" Or strPremierNom = "" Or strDeuxiemeNom = "" Then: fuGarbage = True
        End Select
     
    End Function
    Ça me semble logique si on ne veut pas importer n'importe quoi. De plus on fait d'une pierre deux coups, si une ligne est vide, elle aussi est éliminée.

    PascalpirTotal.zip

    Comme je vous disais dans mon autre post, j'ai découpé le code pour qu'il soit réutilisable.

    Bonne journée

  4. #44
    Nouveau membre du Club
    Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 66
    Points : 28
    Points
    28
    Par défaut Recherche doublons entre tables
    RE
    Je n’ai travaillé pour le moment dans cette version de base que sur la tblDeces.
    Les données dans tous les tableaux sont des relevés d’actes officiels. Les données manquantes sont donc normales, car n’existant pas sur les originaux et nous souhaitons avoir une réplique la plus exacte de ces relevés.
    Problème erreur 2319, suite à une concertation des membres de l’association, il nous a semblé être intéressant de remettre dans les tables le champ « Cote » (qui existait dans la première base). J’ai réinséré ce champ dans les tables et les fichiers Xls et dans le module. Je n‘avais pas essayé. Le problème proviendrait de la tblCommunes. Si on l’ouvre, la sous table ne comporte pas la champ NumCom (que 18 champs ?). Je ne sais pas si je m’explique bien.
    La liaison externe provient de la mise à jour du champ « Sexe » dans les fichiers Xls.
    Un de nos membres a beaucoup travaillé sur Excel dans le cadre de son métier. C’est lui qui prend en charge toute la gestion des fichiers Xls.
    Merci

  5. #45
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour Pascalpir,

    Les données dans tous les tableaux sont des relevés d’actes officiels. Les données manquantes sont donc normales, car n’existant pas sur les originaux et nous souhaitons avoir une réplique la plus exacte de ces relevés.
    Si j'ai bien compris, il est acceptable d'avoir, comme dans votre fichier Excel des décès, une personne décédée qui n'a ni nom, ni prénom. Idem pour les dates, il pourrait y avoir un certificat de naissance ou de décès ou de mariage qui aurait les 3 champs représentant les date vides? Le test que j'ai mis pour les dates est que si on a, au moins, un jour ou un mois ou une années la ligne est valide.

    Est-ce qu'une ligne du fichier Excel peut contenir des données dans seulement une colonne et être quand même valide? L'idée ici est d'éliminer l'effet "GIGO" le plus possible.

    Bonne journée

  6. #46
    Nouveau membre du Club
    Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 66
    Points : 28
    Points
    28
    Par défaut Recherche doublons entre tables
    Re PS
    La tblDeces est en relation avec la tblDecesCommunes.
    Doit-on créer une tblMariagesCommunes pour les Mariages et de même pour tblNaissances avec tblNaissances.
    Nom : Relations.png
Affichages : 129
Taille : 8,5 Ko
    Ou pourrait-on utiliser la même tblCommunes pour les 3 tables.

    Pour ce qui est l’idée d’éliminer des lignes, serait-il possibles de les transférer dans une autre table ex :tblVerification ce qui après vérification nous permettrais de les réintégrer dans les différentes tables ou de les supprimer définitivement.
    Merci, bon WE

  7. #47
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour Pascalpir,

    Doit-on créer une tblMariagesCommunes pour les Mariages et de même pour tblNaissances avec tblNaissances.
    Non pas du tout, ce serait même mauvais.

    Pour ce qui est l’idée d’éliminer des lignes, serait-il possibles de les transférer dans une autre table
    Ici vous avez un problème de conception. Oui c'est possible, mais pourquoi? Vous ne faites aucune vérification lorsque vous éliminez les doublons lors de l'import de la table "tblDecesImport" à la table "tblDeces". Alors pourquoi faire une vérification lors de l'import du fichier Excel dans la table "tblDecesImport"? Maintenant supposons que vous avez l'outil pour vérifier, vous allez vérifier quoi?
    Nom : Doublon.png
Affichages : 131
Taille : 4,2 Ko

    Je regarde ces 2 lignes et si je décide que ce sont 2 personnes différentes, je me suis basé sur quoi?
    De plus si j'importe ces 2 lignes tel quel dans la table des décès à quoi ça peut bien servir, quelle information ça donne?

    Les données manquantes sont donc normales, car n’existant pas sur les originaux et nous souhaitons avoir une réplique la plus exacte de ces relevés.
    Je me permets de revenir sur cette citation, est-ce qu'il y a un minimum d'information obligatoire, je comprend le principe des originaux et je ne sais pas si c'est possible, mais quel serait l'intérêt d'importer une ligne qui aurait seulement le département de saisie comme information comme demandé ici:

    Pourquoi les lignes vides. Peut-on les éviter en ciblant le champs NumCom qui lui est obligatoirement rempli dans le fichier Xls.
    Bonne journée

  8. #48
    Nouveau membre du Club
    Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 66
    Points : 28
    Points
    28
    Par défaut Recherche doublons entre tables
    Bonoir Robert1957
    Comme vous me le dites, je ne crée qu’une tblCommunes, en relation avec les 3 tblDeces, tblNaissances, tblMariages toutes les 3 en relation un-plusieurs avec comme réf communes NumCom.
    NumCom côté tbmCommunes en numéro auto et clé sur ce champ.
    Dans les autres, NumCom Numérique.

    Votre message
    « Je me permets de revenir sur cette citation, est-ce qu'il y a un minimum d'information obligatoire »

    Suite à une réunion de plusieurs membres, nous nous sommes mis d’accord pour considérer comme non importables et à supprimer les enregistrements qui ne contiendrais QUE des champs DIVERS ou COTE ou NUMCOM remplis et que les autres champs seraient vides
    Effectivement, on devrait vérifier le contenu des enregistrement XL afin qu’il n’existe pas de doublons.

    Cette vérification pourrait-elle incluse dans le moImport en insérant une requête Doublons
    Bonne soirée

  9. #49
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour Pascalpir,

    Suite à une réunion de plusieurs membres, nous nous sommes mis d’accord pour considérer comme non importables et à supprimer les enregistrements qui ne contiendrais QUE des champs DIVERS ou COTE ou NUMCOM remplis et que les autres champs seraient vides
    En me basant sur les fichiers Excel que vous avez fourni et l'affirmation ci-haut, la Bd ci joint fait ceci :

    1. Choix du fichier Excel à importer
    2. Importation du fichier dans un tableau.
    3. Vérification de l'intégrité des données (minimum de données requises)
    4. Non importation des doublons à même le fichier Excel avant l'importation dans la table import
    5. Suppression des doublons de la table import vs la table réelle concernée
    6. Ajout des enregistrements (sans doublon) à la table réelle concernée
    7. Message qui explique le déroulement de l'importation

    Nom : MessagePascalpir.png
Affichages : 106
Taille : 7,6 Ko

    La première ligne du message vous indique le nombre de lignes du fichier Excel qui ne rencontraient pas les normes. La deuxième ligne indique le nombre de lignes qui ont été importées dans la table temporaire, vous pouvez donc déduire le nombre de lignes qui auraient été inscrites en double. La troisième ligne indique le nombre de lignes de la table (import) temporaire qui ont été supprimées parce que retrouvées dans la table (tblDeces) destination. La quatrième ligne indique le nombre de lignes qui ont été ajoutées à la table destination. La cinquième ligne indique le nombre de lignes après l'importation de la table destination.

    PascalpirLateBindingV1.zip

    Voici un fichier Excel qui montre bien le déroulement. Il y a une ligne non conforme, une ligne en double.

    DecesTest.xls

    Bonne journée

  10. #50
    Nouveau membre du Club
    Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 66
    Points : 28
    Points
    28
    Par défaut Recherche doublons entre tables
    Réponse
    Merci Robert1957 pour cette aide très précieuse (problème que n’aurait pas su résoudre moi-même).
    Dans un post précédent
    Doit-on créer une tblMariagesCommunes pour les Mariages et de même pour tblNaissances avec tblNaissances.
    Vous m’avez répondu que non.
    J’ai essayé ce qui suit, mais ne marche pas.
    Nom : Relation.png
Affichages : 101
Taille : 8,7 Ko
    Je souhaite que la tblCommunes regroupe en fonction de NumCom (donc pour la même commune) les enregistrements Décès, Naissance, Mariage
    Pour l’instant, je n’ai pas mis ID avec clé dans aucune table (sauf commune). Comme cité avant, les tables peuvent contenir 3 000 000 enregistrements, voir plus peut-être donc (ID= 3 000 000)
    Les adhérents de l'association et moi vous remercient encore pour votre collaboration à cette base.
    Bonne soirée.

  11. #51
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour Pascalpir,

    Qu'est-ce qui ne marche pas. Le nombre d'enregistrements n'a pas d'importance sur le comportement d'une table de référence. La relation doit être faite avec la clé primaire de la table référence sur la clé externe de la table concernée (tblDeces). Le type de données doit être identique, ici c'est du numérique, entier long. Voici un exemple:

    Nom : Pascalpir_Relation.png
Affichages : 90
Taille : 44,1 Ko

    Dans cet exemple, j'ai choisi l'option de mettre à jour les champs correspondants, ce qui implique qu'une modification dans la table Communes impactera tous les enregistrements associés dans les autres tables.

    L'autre option choisie, la plus importante pour l'intégrité des données, est d'appliquer l'intégrité référentielle, ce qui signifie qu'il sera impossible d'ajouter dans les tables "tblDeces" et autres un numéro qui n'existerait pas dans la table de référence.

    Bonne journée

  12. #52
    Nouveau membre du Club
    Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 66
    Points : 28
    Points
    28
    Par défaut Recherche doublons entre tables
    Bonjour Robert1957
    Merci, pour les réponses. J'avais un problème avec la tblCommunes. Mes relations étaient bonnes. Je l'ai supprimée et réécrite cela fonctionne
    Merci encore et bonnes fêtes à toutes et à tous

  13. #53
    Nouveau membre du Club
    Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 66
    Points : 28
    Points
    28
    Par défaut Recherche doublons entre tables
    Bonjour,
    Dans le code fourni par Robert1957,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    strSQL = "DELETE" _
                    & " FROM tblDecesImport" _
                    & " WHERE Exists (" _
                    & " SELECT * FROM tblDeces" _
                    & " WHERE Nz(tblDecesImport.Jour,""|"") = Nz(tblDeces.Jour,""|"")" _
                    & " And Nz(tblDecesImport.Mois,""|"") = Nz(tblDeces.Mois,""|"")" _
    L’ordre des différents champs est-il important ? ou peut-on commencer par exemple par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & " And Nz(tblDecesImport.NumCom,""|"") = Nz(tblDeces.NumCom,""|""))"
    Merci.et bonne fêtes à tous

  14. #54
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour Pascalpir,

    L'ordre des champs n'a pas vraiment d'importance en autant que vous ne modifiez pas la structure de la requête. Le "WHERE clause" débute toujours par "WHERE quelque chose" et ensuite le "AND quelque chose d'autre".

    Bonne journée

  15. #55
    Nouveau membre du Club
    Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 66
    Points : 28
    Points
    28
    Par défaut Recherche doublons entre tables
    Bonjour,
    Suite à différents essais avec le code fournis par ROBERT1957, serait-il possible avant l’import du fichier XL de faire une sélection dans la tblDeces en fonction du NumCom qui correspondrais au fichiers KL que l’on voudrait importer, ce qui permettrait de limiter les recherches dans la table.
    Je résume :
    1 - choix du NumCom (zone de liste ?)
    2 – Trie de la tblDeces en fonction de 1
    3 – importation des fichiers Kl dont NumCom correspond à 1.
    Ne sachant comment faire, je reviens vers vous.
    Merci et bonne journée

Discussions similaires

  1. [AC-2003] Eviter les doublons entre deux tables
    Par soleil_levant dans le forum Modélisation
    Réponses: 1
    Dernier message: 23/06/2009, 17h29
  2. Recherche doublons entre 2 champs
    Par zenzolarticho dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/07/2007, 09h52
  3. rechercher et éliminer doublons dans table
    Par patbeautifulday1 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/05/2007, 10h27
  4. [Oracle 8i]Recherche doublon sur une même table
    Par fmoriet dans le forum Oracle
    Réponses: 3
    Dernier message: 01/08/2006, 10h09
  5. [Oracle] Recherche de doublons entre 2 tables
    Par Isa31 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/02/2006, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo