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 :

recordset select : erreur


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de acorna
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Points : 41
    Points
    41
    Par défaut recordset select : erreur
    Bonjour!


    J'ai un petit souci sur un simple recorset select. Access me produit l'erreur 3464 : Type de données incompatibles dans l'expression du critère.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub combo_AfterUpdate()
     
    Dim db As Database
    Set db = CurrentDb
    Dim env As String
    env = Me.N_ENV.Value
    Dim req As String
    Dim rst As DAO.Recordset
     
    req = "SELECT [NO_VERRELEASE] FROM [versionn],[integration] WHERE [versionn].[IS_VERSION]=[integration].[IS_VERSION] AND [integration].N_ENV='" & env & "'"
     
    Set rst = db.OpenRecordset(req, dbReadOnly) <====== ERREUR
    Malgré plusieurs tests, je ne comprends pas mon erreur.
    Et vous?
    merci =)

  2. #2
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    bonjour,,


    FROM [versionn],[integration]
    c'est impossible "FROM" doit renvoyer qu'une table ou des tables liées

    A mon avis il te faut créer tes requêtes avec le QBE et copier le code SQL dans le VBA c'est une manière très rapide et sûre de procéder

  3. #3
    Membre du Club Avatar de acorna
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    il est vrai que 2 tables dans le FROM, ça risquait pas de marcher
    après correction, access me dit, toujours au meme endroit, "trop peu de paramètres, 2 attendus "...
    décidement

  4. #4
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    re bonjour,

    ce serait bien de remettre ton code

    [versionn].[IS_VERSION]=[integration].[IS_VERSION]
    c'est certainement ici que çà bug car "]=[integration].[IS_VERSION]" il ne peut pas deviner ce que c'est


    donc il faut un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [versionn].[IS_VERSION]= & [integration].[IS_VERSION] &  AND...
    pour autant que "[integration].[IS_VERSION]" soit un champ ou une zone de texte de ton formulaire.

  5. #5
    Membre du Club Avatar de acorna
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    en QBE, access me propose une requete de ce genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    req = "SELECT NO_VERRELEASE FROM versionn INNER JOIN integration ON versionn.IS_VERSION = integration.IS_VERSION WHERE versionn.IS_VERSION=[integration].[IS_VERSION] AND integration.N_ENV='" & env & "'"
    versionn et integration sont des tables, liées par une clé IS_VERSION (primaire pour versionn, étrangère pour integration ).
    N_Env est un champ de versionn.

    Mais toujours l'erreur. Je sais pas s'il aime les inner join ...

  6. #6
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    le problème se situe là

    WHERE versionn.IS_VERSION=[integration].[IS_VERSION] AND integration.N_ENV='" & env & "'"
    tu dis que "N_ENV" est un champs de la table "versionn" or tu mets dans intégration.

    ma question où vas tu chercher les valeurs pour la condition WHERE?

    car je pense que le sql "versionn.IS_VERSION=[integration].[IS_VERSION] " il ne sait pas rechercher.

    Un autre truc très bien est de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim rst As DAO.Recordset
     
    req = ""
    msgbox req ' permet de visonaliser la requête et voir les valeurs du WHERE
     
    Set rst = db.OpenRecordset(req, dbReadOnly)

  7. #7
    Membre du Club Avatar de acorna
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    autant pour moi, le n_env est bien un champ de integration.
    En fait le where versionn.IS_VERSION=[integration].[IS_VERSION] est simplement une jointure, pas d evaleurs spécifiques ...
    Access ne gère pas les jointures SQL?

  8. #8
    Membre du Club Avatar de acorna
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    Après vérification SQL dans Access, cette requête là me sort le bon résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    req = "SELECT NO_VERRELEASE FROM versionn, integration WHERE versionn.IS_VERSION = [integration].[IS_VERSION]AND integration.N_ENV='" & env & "'"
    Mais dans un db.openrecordset, erreur de type de données incompatible dans l'expression du critère

  9. #9
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    ta jointure se fait ici

    ON versionn.IS_VERSION = integration.IS_VERSION
    et non dans la clause Where!!

  10. #10
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    tu écris::
    Après vérification SQL dans Access, cette requête là me sort le bon résultat
    où as tu tester cette requête?

  11. #11
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    De quel type est N_Env ?

    Numérique ? Dans ce cas :

    N_ENV=" & env

  12. #12
    Membre du Club Avatar de acorna
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    Voilà, j'ai trouvé.

    La requête ci-dessous est bonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    req = "SELECT NO_VERRELEASE FROM versionn, integration WHERE versionn.IS_VERSION = [integration].[IS_VERSION]AND integration.N_ENV=" & env & ""
    Le problème venait des guillements simples et doubles mal mis autour de la variable "env" du critère, et non d'une mauvaise jointure...On peut donc bien mettre une jointure ainsi, et également deux tables dans la clause FROM. Je commencais à en perdre mon SQL.
    Difficile de cibler

    Merci!

  13. #13
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    A quoi sert : & ""


    Tu peux le retirer

  14. #14
    Membre du Club Avatar de acorna
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 61
    Points : 41
    Points
    41
    Par défaut
    lol oui en effet! Petit oubli de ma part
    Merci

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

Discussions similaires

  1. recordset select case
    Par boulgiboulga dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/04/2008, 12h01
  2. requete SQL Select : erreur syntaxe
    Par samtheh dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 11/06/2007, 16h58
  3. [VBA] requête, recordset et erreur 3021
    Par bugprog dans le forum VBA Access
    Réponses: 10
    Dernier message: 27/04/2007, 09h13
  4. [ADO-Access] ADOQuery1.Open (SELECT) -> Erreur non spécif
    Par david_chardonnet dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/11/2004, 15h29
  5. recordset et erreur 80040e10
    Par Mad666 dans le forum ASP
    Réponses: 3
    Dernier message: 28/04/2004, 14h26

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