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

Requêtes et SQL. Discussion :

Comparer deux colonnes d'une même table


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut Comparer deux colonnes d'une même table
    Bonjour à tous ...

    Ma question est la suivante : Est-il possible de comparer le contenu de deux colonnes d'une même table ?

    Voici un exemple :

    Prennons la table :

    TB_RESULTAT
    nom_entreprise_access ....... nom_entreprise_slx
    Entreprise_1 ...................... Entreprise_1
    Entreprise_2 ...................... Entreprise_2
    Entreprise_3......................Enttrreepprrise_3

    Ce que je cherche à faire c'est faire ressortir la 3ème ligne de la table car il y a une différence entre les deux noms d'entreprise.

    Le but de tout cela c'est de pouvoir comparer des noms d'entreprise et si il y a un changement alors je fais des mises à jour ...

    Si vous avez une petite idée pour me donner un ptit coup de pouce cela serait volontiers ...

    Merci d'avance pour votre aide ...

    A tout bientôt ...
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Bonjour,

    Simplement en utilisant une petite requete du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1.NomSocAccess
    FROM Table1
    WHERE Table1.NomSocAccess<>[NomSocXls];
    Bonne journée
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

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

    Tu dois pouvoir faire cela avec un code de ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Dim rst As DAO.Recordset
        Dim strSql As String
        strSql = "SELECT nom_entreprise_access, nom_entreprise_xls FROM TB_RESULTAT;"
     
        Set rst = CurrentDb.OpenRecordset(strSql)
        While Not rst.EOF
            If rst("nom_entreprise_access") <> rst("nom_entreprise_xls") Then
                ' ce que tu veux
            End If
            rst.MoveNext
        Wend
     
        rst.Close
        Set rst = Nothing
    En utilisant DAO.

    Remarque : J'ai tapé le code à la main, pas vérifié.

    Starec

  4. #4
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Merci pour vos réponses ..

    C'est super ... une en SQL et l'autre en VBA ... c'est droit ce qu'il me fallait ...

    Merci à vous deux ...

    Je vais faire quelques tests et je posterai ma solution car cela peut peut-être aider qqn d'autre.

    Merci d'avance pour votre aide ...

    Salutations à tous ...
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

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

    En complément

    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
    Public Sub Comp()
        Dim rst As DAO.Recordset
        Dim strSql As String
        strSql = "SELECT nom_entreprise_access, nom_entreprise_xls FROM TB_RESULTAT;"
     
        Set rst = CurrentDb.OpenRecordset(strSql)
        While Not rst.EOF
            If rst("nom_entreprise_access") <> rst("nom_entreprise_xls") Then
                ' mise à jour
                CurrentDb.Execute "UPDATE TB_RESULTAT SET nom_entreprise_xls='" & rst("nom_entreprise_access") & "';"
            End If
            rst.MoveNext
        Wend
     
        rst.Clone
        Set rst = Nothing
     
    End Sub
    Cela devrait remplacer le nom de nom_entreprise_xls par le nom de nom_entreprise_access
    Starec

  6. #6
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Re ...

    Merci vraiment pour votre aide ...

    Alors j'ai fait quelques modifications et cela fonctionne parfaitement ...

    Pour résumé le tout voici mon code et quelques commentaires en fin du post :

    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
    '** ENTREPRISE TABLE TB_CAHIER_CHARGE **
        Dim rst_EntrepriseCDC As DAO.Recordset
        Dim str_ReqEntrepriseCDC As String
        Dim var_PkCahierCharge As Variant
     
        '##### ENTREPRISE #####
            '** ENTREPRISE TABLE TB_CAHIER_CHARGE **
            Set base_donnee = Application.CurrentDb
            Set rst_EntrepriseCDC = base_donnee.OpenRecordset("REQ_NomEntrepriseTBCAHIERDESCHARGES")
            str_ReqEntrepriseCDC = ("SELECT ACCOUNT.ACCOUNTID, ACCOUNT.ACCOUNT, TB_CAHIER_CHARGE.nom_entreprise_avant_vente, TB_CAHIER_CHARGE.pk_cahier_des_charges FROM TB_CAHIER_CHARGE INNER JOIN ACCOUNT ON TB_CAHIER_CHARGE.num_reference_entreprise_slx = ACCOUNT.ACCOUNTID")
            Set rst_EntrepriseCDC = base_donnee.OpenRecordset(str_ReqEntrepriseCDC, dbOpenDynaset)
     
            'On parcourt le résultat de la requête ouverte précédement.
            While Not rst_EntrepriseCDC.EOF
                'On test si il y a une différence entre les deux noms.
                If rst_EntrepriseCDC("nom_entreprise_avant_vente") <> rst_EntrepriseCDC("ACCOUNT") Then
                    'Récupération de la pk du CDC pour savoir quelle ligne il faut mettre à jour dans la requête suivante.
                    var_PkCahierCharge = rst_EntrepriseCDC("pk_cahier_des_charges")
     
                    'Si il y a une différence il faut mettre à jour les champs des tables correspondantes dans Access.
                    CurrentDb.Execute "UPDATE TB_CAHIER_CHARGE SET nom_entreprise_avant_vente='" & rst_EntrepriseCDC("ACCOUNT") & _
                    "' WHERE pk_cahier_des_charges LIKE'" & var_PkCahierCharge & "';"
                End If
            rst_EntrepriseCDC.MoveNext
            Wend
    Comme vous pouvez le voir j'utilise le recordset avec une requête ... c'est plus pratique pour moi que faire de la copie de données à tort et à travers dans la base pour mettre à jour mes données.

    Je rappel le but de ce code :
    Avec ma requête je recherche tous les noms d'entreprise qui sont dans la table TB_1 et dans la table TB_2. Une fois que j'ai un résultat je teste si le nom de l'entreprise est différent d'une table à l'autre. Si il est différent je mets à jour le nom de l'entreprise dans ma table désirée. J'ai préalablement décidé quelle était la table "MAITRE" pour mettre à jour mes données.

    Voila ...

    Merci encore à tous pour votre aide ... j'espère que ce bout de code pourra aider des autres personnes ...

    A tout bientôt ...
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. créer une macro pour comparer deux cellules d'une même colonne
    Par barbie-9 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/05/2012, 19h28
  2. Comparer deux lignes d'une même table dans une bdd
    Par Pierrot33 dans le forum Général Java
    Réponses: 3
    Dernier message: 19/11/2011, 19h04
  3. Agreger deux colonnes d'une même table
    Par calagan99 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/03/2008, 14h24
  4. Réponses: 13
    Dernier message: 20/04/2007, 17h30
  5. Réponses: 8
    Dernier message: 19/04/2007, 19h41

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