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 :

Requête avec NOT IN qui ne fonctionne pas [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 16
    Points
    16
    Par défaut Requête avec NOT IN qui ne fonctionne pas
    Bonjour à tous

    je développe une application pour réaliser des diagnostiques d'accessibilité pour les handicapés
    je veux comparer les données d'un champs (constats) de deux tables.
    j'ai une table qui sert seulement à récupérer des données et une autre ou j'enregistre.
    le but de cette comparaison est d'afficher un message à l'utilisateur
    pour lui afficher les constats qu'il n'a pas encore enregistré quand il click sur un bouton "Bilan des constats".

    voici le code de mes requêtes


    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
    28
    29
    30
    31
    32
    [SQL]
    'la requête récupère les constats enregistrés pour le point de contrôle affiché
        sql = "SELECT Tab_Constat_Escalier.Constat_Escalier"
        sql = sql & " FROM Tab_Constat_Escalier"
        sql = sql & " WHERE Tab_Constat_Escalier.Num_Auto_Contrôle_Escalier=" & Me.Txt_Num_Auto_Contrôle_Escalier
     
         'compte les constats enregistrés pour ce point de contrôle
        CptConstatRéalisé = DCount("[Constat_Escalier]", "Tab_Constat_Escalier", _
                    "[Tab_Constat_Escalier].[Num_Auto_Contrôle_Escalier] =[Txt_Num_Auto_Contrôle_Escalier]")
     
        'ouverture du recordset
        rst.Open sql, cnn, adOpenDynamic, adLockPessimistic
     
        'la requête récupère les constats  pas encore enregistrés pour le point de contrôle
        sql1 = "SELECT Tab_Données_Constats_Escalier.Constats"
        sql1 = sql1 & " FROM Tab_Données_Constats_Escalier"
        sql1 = sql1 & " INNER JOIN Tab_Données_Pt_Ctrl_Escalier"
        sql1 = sql1 & " ON Tab_Données_Pt_Ctrl_Escalier.Code_Auto_Ctrl_Escalier = Tab_Données_Constats_Escalier.Code_Auto_Ctrl_Escalier"
        sql1 = sql1 & " WHERE Tab_Données_Pt_Ctrl_Escalier.[Point_de_contrôle]= '" & Me.Txt_Pt_Contrôle & "'"
        sql1 = sql1 & " NOT IN (SELECT Tab_Constat_Escalier.Constat_Escalier FROM Tab_Constat_Escalier"
        sql1 = sql1 & " WHERE Tab_Constat_Escalier.Num_Auto_Contrôle_Escalier = " & Me.Txt_Num_Auto_Contrôle_Escalier & ")"
     
        rst1.Open sql1, cnn, adOpenDynamic, adLockPessimistic
     
        'la requête compte les constats  pas encore enregistrés pour le point de contrôle
        sql2 = "SELECT count(Tab_Données_Constats_Escalier.Constats) as nb"
        sql2 = sql2 & " FROM Tab_Données_Constats_Escalier"
        sql2 = sql2 & " INNER JOIN Tab_Données_Pt_Ctrl_Escalier"
        sql2 = sql2 & " ON Tab_Données_Pt_Ctrl_Escalier.Code_Auto_Ctrl_Escalier = Tab_Données_Constats_Escalier.Code_Auto_Ctrl_Escalier"
        sql2 = sql2 & " WHERE Tab_Données_Pt_Ctrl_Escalier.[Point_de_contrôle]= '" & Me.Txt_Pt_Contrôle & "'"
        'sql2 = sql2 & " NOT IN (SELECT Tab_Constat_Escalier.Constat_Escalier FROM Tab_Constat_Escalier"
        'sql2 = sql2 & " WHERE Tab_Constat_Escalier.Num_Auto_Contrôle_Escalier = " & Me.Txt_Num_Auto_Contrôle_Escalier & ")"
    [/CODE]

    mon NOT IN ne fonctionne pas alors que j'utilise déjà ce type de requête mais sans INNER JOIN et ça marche.
    c'est certainement un problème d'écriture, mais la je ne vois pas

    Merci d'avance pour votre aide


    HappyAccess

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonsoir,

    Il y a écrit
    where a=b not in...
    C'est soit
    where a=b
    soit
    where a not in
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    bonsoir à tous et à nico84

    merci pour l'explication, je fait un where a not in

    voici la requête corrigée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [sql]'la requête récupère les constats  pas encore enregistrés pour le point de contrôle
        sql1 = "SELECT Tab_Données_Constats_Escalier.Constats"
        sql1 = sql1 & " FROM Tab_Données_Constats_Escalier"
        sql1 = sql1 & " INNER JOIN Tab_Données_Pt_Ctrl_Escalier"
        sql1 = sql1 & " ON Tab_Données_Pt_Ctrl_Escalier.Code_Auto_Ctrl_Escalier = Tab_Données_Constats_Escalier.Code_Auto_Ctrl_Escalier"
        sql1 = sql1 & " WHERE Tab_Données_Pt_Ctrl_Escalier.[Point_de_contrôle]= '" & Me.Txt_Pt_Contrôle & "'"
        sql1 = sql1 & " AND Tab_Données_Constats_Escalier.Constats"
        sql1 = sql1 & " NOT IN (SELECT Tab_Constat_Escalier.Constat_Escalier FROM Tab_Constat_Escalier"
        sql1 = sql1 & " WHERE Tab_Constat_Escalier.Num_Auto_Contrôle_Escalier = " & Me.Txt_Num_Auto_Contrôle_Escalier & ")"
    [/CODE]


    merci encore à tous

    HappyAccess

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

Discussions similaires

  1. requête dont la modification qui ne fonctionne pas
    Par dj_techno dans le forum WinDev
    Réponses: 3
    Dernier message: 02/04/2009, 15h10
  2. requete SQL avec sous requete qui ne fonctionne pas
    Par skyarnangel dans le forum Langage SQL
    Réponses: 8
    Dernier message: 06/02/2009, 14h47
  3. Une sous-requête avec NOT IN qui me cause du souci
    Par annedeblois dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 23/09/2008, 14h56
  4. Requête toute bête mais qui ne fonctionne pas
    Par m51_2000 dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/11/2007, 13h15
  5. Réponses: 6
    Dernier message: 04/09/2007, 00h11

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