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 :

comparaison de plusieurs champs texte dans 2 table differentes


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 33
    Points
    33
    Par défaut comparaison de plusieurs champs texte dans 2 table differentes
    salut a tous
    j'ai un nouveau soucis avec access !
    il faudrais que je compare des champs texte provenant de 2 tables !
    je m'explique :
    j'ai dans me 2 tables 13 champs de type texte que je doit comparer entre eux et n'afficher que ceux qui ont changer !
    par exemple table 1 champ 1 => bonjour; table 2 champ 1 => salut ... il faudrais qu'il m'affiche salut en revanche si on a table1 champ1 => bonjour et table2 champ2 => bonjour alors on n'affiche rien car il y a pas eu de modif !

    j'ai essayer avec le not equals mais j'ai pas reussis

    merci pour l'aide

  2. #2
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    Essaie avec une requête de non correspondance.

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 33
    Points
    33
    Par défaut
    merci pour ta reponse mais je suis pas un grand ferru d'access lol
    je debute dans le log ...
    c'est quoi cette requete ?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Pour ma part je ne vois que VBA avec utilisation de For Each... next pour parcourir les champs des tables.
    Amicalement

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Met toi dans l'onglet requête, click sur nouveau et tu verras requête de non correspondance, et suis les indications.

    Starec

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 33
    Points
    33
    Par défaut
    alors pour la requete de non correspondance en fait ca correspond comme une jointure !
    et comme il faut que je l'applique a 14 champs ca va pas le faire 14 requetes
    .... sinon en vba moi je veux bien mais alors la je n'ai aucune notions lol

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 33
    Points
    33
    Par défaut
    je remonte mon probleme car je n'ai toujours pas trouver comment faire pour comparer ces 13 cahmps texte en meme temps pour ne pas avoir a creer 50 requete ...

    merci

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Ton souci est-il de savoir si un champ a été modifié et dans ce cas obtenir
    ou modifier l'intégralité de la ligne ou te faut-il ressortir uniquement ce champ isolé?

    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 33
    Points
    33
    Par défaut
    en fait si un des 13 champs d'une ligne a ete modifié il faut que ca me ressorte la ligne complete.
    j'ai a peu pres 70 000 lignes c pour ca que je voudrais une requete car le faire a la main c'est vraiment pas possible !

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Comme je t'ai dis avec une For Each ... Next on peut très bien s'en sortir.

    Reste maintenant à éclaircir un point.

    Tu as dans ta table1 70 000 lignes et tu veux comparer pour chaque ligne la valeur de chaque champs aux valeurs des champs correspondant dans la table2.

    1 - Est ce que la table2 contient un seul enregistrement?
    Auquel cas j'ai une propositions

    2 - Est ce que la table2 contient plusieurs enregistrements?
    Si tel est le cas, doit on comparer la valeur de chaque champ d'une ligne de la table1 à toutes les valeurs du même champ pour toutes les lignes de la table2?
    Amicalement

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir;

    Tu peux ajouter un champ à tes tables : txt_ModifLe

    Dans tes formulaires avant mise à jour :

    Me![txt_ModifLe] = Now()

    Après avec tes requêtes il te suffit de vérifier la discordance entre les dates.

    Cordialement
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Re bonsoir;

    Mon précédent post correspond à un travail en "vitesse de croisière". Par contre n'est d'aucune utilité
    s'il faut partir d'une base ancienne et découvrir ou on en est.
    S'offre a toi la possibilité d'y arriver avec 3 requêtes.
    Tu regroupe tes 13 champs en 1 seul pour chaque table genre :
    [Champ1]&[Champ2]&[Champ3]......
    Et en troisième une simple requête de non correspondance devrait faire l'affaire.

    Cordialement
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 33
    Points
    33
    Par défaut
    alors dans ma table 1 qui me sert de reference j'ai environ 70 000 ligne avec dans le champs 1 un numéro unique qui correspond au numéro de client !
    dans la table 2 j'ai a peu pres le meme nombre de ligne mais pas exactement car il y a des nouveaux clients ajouter. il y a aussi un champ 1 avec un numero de client qui correspond avec le champ 1 de la table 1 : c'est ma cle donc !

    sinon pas trop compris l'histoire des dates ... et sinon pour regrouper les 13 champs pourquoi pas faut que j'essaye ca !

    merci

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Donc supposons que tu soit sur la ligne 10 correspondant au client (champ1) 5. tu doit donc comparer tous les champs (2, 3, ...13) aux même champs de la table2 correspondant au même client?

    Est ce que le client en question a un seul enregistrement dans la table2?
    Amicalement

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Voici un exemple
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Public Sub test()
    Dim mbd As Database, DTab1 As Recordset, DTab2 As Recordset, ChampTab As Field
    Dim ChampTab2 As Variant, Msql As String, ChampCle As Variant
     
    Set mbd = CurrentDb()
    DTab1 = mbd.OpenRecordset("Table1")
     
        Do Until DTab1.EOF
            ChampCle = dtabb1("Champ1") ' Récupération de la clé
     
            For Each ChampTab In DTab1.Fields 'Parcours des champs de la ligne
               ChampTab2 = ChampTble.Name 'Récupération d'un champ
     
               'Récupération des données de la table2 en fonction de la clé
               Msql = "Select " & ChampTab2 & " From Table2 " & "Where Champ1 = " & ChampCle
               Set DTab2 = mbd.OpenRecordset(Msql)
               If ChampTble.Value <> DMat(ChampTab2) Then
                   MsgBox "Trouvé :" & DMat(ChampTab2)
               End If
     
               DTab2.Close
            Next
     
            DTab1.MoveNext
        Loop
    End Sub
    Amicalement

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 33
    Points
    33
    Par défaut
    merci pour l'expemple
    alors oui il n'y a qu'un numero unique que ce soit dans la table 1 comme dans la 2 !
    par exemple le client n°5 a dans la table 1, 13 champs comme par exemple l'adresse, nom, prenom ect ... si l'adresse est 3 rue ... dans la table 1 et 2 rue dans la table 2 ... il faut que ca me mette dans une table 3 la ligne complete avec l'adresse 2 rue ...
    par contre si les 13 champs sont pareil alors il rajoute rien a la table 3

    sinon pour le code j'ai regarder un peu mais n'y connaissant rien j'ai pas compris grand chose alors si tu pouvais m'expliquer un peu plus

    merci

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Bon. Il y avait quelque erreur dans l'exemple.
    Voici les corrections.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Public Sub test()
    Dim mbd As Database, DTab1 As Recordset, DTab2 As Recordset, ChampTab As Field
    Dim ChampTab2 As Variant, Msql As String, ChampCle As Variant
     
    Set mbd = CurrentDb()
    Set DTab1 = mbd.OpenRecordset("Table1")
     
        Do Until DTab1.EOF
            ChampCle = DTab1("Champ1") ' Récupération de la clé
     
            For Each ChampTab In DTab1.Fields 'Parcours des champs de la ligne
               ChampTab2 = ChampTab.Name 'Récupération d'un champ
     
               'Récupération des données de la table2 en fonction de la clé
               Msql = "Select " & ChampTab2 & " From Table2 " & "Where Champ1 = " & ChampCle
               Set DTab2 = mbd.OpenRecordset(Msql)
               If ChampTab.Value <> DTab2(ChampTab2) Then
                   MsgBox "Trouvé :" & DTab2(ChampTab2)
               End If
     
               DTab2.Close
            Next
     
            DTab1.MoveNext
        Loop
    End Sub
    J'ai tenté de le commenté autant que je peux avec le plein de travail.

    Regarde la base exemple que je joint.
    A la place du message tu peux bien mettre le résultat dans la table que tu veux.
    Amicalement

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 33
    Points
    33
    Par défaut
    merci beaucoup de ton aide je vais regarder ca

Discussions similaires

  1. [ZF 1.8] Plusieur champs text dans un dd
    Par citronbleu-v dans le forum Zend_Form
    Réponses: 1
    Dernier message: 18/05/2009, 13h10
  2. 2 champs differents dans 2 tables differentes > 2 colonnes
    Par BeWog dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 17/06/2008, 16h44
  3. Réponses: 5
    Dernier message: 15/09/2006, 16h13
  4. Plusieurs Champs d'une même table dans plusieurs textebox
    Par cyberbiker dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 13/09/2006, 11h32
  5. Champ text dans table inserted ?
    Par devdev dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/06/2004, 17h00

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