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

VBA Access Discussion :

Requete SQL incomprise


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut Requete SQL incomprise
    Bonjour a tous ,

    J'ai une table saisie_eaux sous access avec comme champs
    Id_eaux
    Référence_eaux
    Gram
    Résultats

    Mon but est de compter les enregistrements non conformes, à savoir ceux
    - Résultats >10 et Gram = '-'
    - Résultats > 100
    - Résultats = 'tntc'

    donc j'ai créer la requete suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = "SELECT COUNT(Id_eaux) FROM saisie_eaux WHERE référence_eaux ='DM1' and Id_eaux IN (SELECT Id_eaux FROM saisie_eaux WHERE Résultats >100 or Résultats = 'TNTC' or Résultats = 'tntc' or Id_eaux IN (SELECT Id_eaux FROM saisie_eaux WHERE Résultats >10 and Gram='-'));"
    Malheureusement, Access n'a pas l'air d'aimer mon SQL.....
    Je pense que mon erreur vient de la rédaction de cette requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Run-time error '3464':
    Data type mismatch in criteria expression
    merci d'avance pour ceux qui verraient une bourde

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Bonjour,

    Alors premièrement, cette requête est inutilement complèxe; on peut arriver au résultat avec un simple et unique "where", pas besoin de sous-requêtes...

    Une "traduction" naïve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select count(*)
    from saisie_eaux
    where référence_eaux = 'DM1'
    and (Résultats > 100 or Résultats = 'TNTC' or Résultats = 'tntc' or (Résultats > 10 and Gram = '-'))
    Par contre, c'est encore améliorable...

    Je suis sceptique sur la nature de la colonne "Résultats"...peux-tu me dire de quelle type elle est ?
    Il semblerait que cela soit tu texte, tu vas donc devoir faire une convertion en numérique pour que "Résultats > 100" puisse être traité.

    De même pour la double contraite sur 'TNTC' et 'tntc'; cela peut être fait en une seule fois avec UCase(Résultat) = 'TNTC' (pas sûr de la syntaxe Access, mais l'idée est là).

  3. #3
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Merci de ta réponse...

    J'ai essayé avec ta requete, mais cela me trouve plus de résultats (10 au lieu de 0)

    effectivement la colonne résultats est de type "Text"
    qu'appelles tu par conversion ?
    il est vrai que c'est pas le top de mélanger les deux, mais la base n'est pas de moi ...

    edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = "SELECT COUNT(*) FROM saisie_eaux WHERE référence_eaux ='DM1' and Val(Résultats) >100 or Résultats = 'TNTC' or Résultats = 'tntc' or (Val(Résultats) >10 and Gram='-') ;"
    nouvelle requete.... mais ne fonctionne toujours pas ...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 155
    Par défaut
    Bonjour,

    Apparemment, le problème vient de ton champ Résultats qui contient tantôt un nombre, tantôt une chaîne de caractères. Si tu as pu y mettre "tntc", c'est que tu l'as déclaré comme étant de type texte. Dans ce cas, dans ta requête, remplace Résultats par Val(Résultats) chaque fois que ce champ doit être comparé à un nombre. Par exemple, remplace :

    Résultats>100

    par :

    Val(Résultats)>100

    Cela dit, je ne conseillle pas d'utiliser un même champ pour y mettre des nombres aussi bien que du texte. Access n'est pas Excel et tu rencontreras d'autres obstacles si tu gardes cette structure.

Discussions similaires

  1. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  2. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 16h54
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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