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 :

Utilisation d'une valeur comme nom de champ. [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 35
    Points
    35
    Par défaut Utilisation d'une valeur comme nom de champ.
    Bonjour à tous,

    il y a quelquechose que j'utilise régulièrement en vba mais que je n'arrive pas à retranscrire dans une requête...
    Pour simplifier, ma requête a deux tables : une avec un champ N qui donnera une valeur de 1 à 20 et une deuxième qui a des champ de 1 à 20 avec des valeurs différentes. Je voudrais donc récupérer dans ma requête la valeur adéquate en fonction de la valeur de mon champ N (j'espère être clair).
    en vba, lorsque qu'on met Table(N), cela fonctionne parfaitement. Or dans ma requête, si je met Table(N), il me sort en erreur "fonction Table non définie dans l'expression".
    Y a t-il une syntaxe plus appropriée pour éviter cette erreur ? ou autre.

    Merci d'avance.

    Marco

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    On utilise plutôt la syntaxe [MaTable]![MonChamp]
    Frédéric
    Développeur d'Applications Access

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    Ok mais ici, je ne veux pas la valeur contenue dans "Monchamp" mais une valeur contenue dans un champ qui porte comme nom "Monchamp".

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    ça y est j'ai compris ce que tu veux faire.
    Je crois que autant on sait faire en VBA, autant je en vois pas comment faire dans les requètes.
    Frédéric
    Développeur d'Applications Access

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut fgiambelluco et marco361020,

    utilise la fonction DLookup() pour récupérer la valeur dans la deuxième table avec comme critère le contenu du champ de la première table.


  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    Merci, c'est vrai que j'y avais pas pensé pour la requête. je teste ça et je vous tiens au courant.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    Bon, l'idée me parait bonne et correspond à ce que je veux faire mais je n'arrive pas à l'appliquer...
    si je met , cela ne peut pas fonctionner car ce n'est N que je cherche en table2 mais la valeur de N (entre 1 et 20).
    comment faire en sorte qu'il recherche la valeur du champ N ?

    merci encore pour votre aide.

  8. #8
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    un truc du genre:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    dlookup("N","Table2","N='" & [N] & "'")
    => recupérer la valeur du champ "N" dans la table "Table2" où le champ [N] est égale au contenu du champ N de l'enregistrement courant.

    ps: dans ce cas N typé string et ne contenant pas de caractère spéciaux: apostrophe et guillemet (auquel cas les doubler).


  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    Désolé, je ne sais pas si j'ai été clair dans mes explications. Le problème est que c'est le nom du champ [N] qui est inconnu...
    Si mon champ [N] de ma table1 = 2, alors je veux récupérer la valeur du champ [2] de la table2.
    en vba, on aurait mis un truc du genre Table2(Table1!N) mais comment retranscrire cette idée dans une requête...

  10. #10
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    oups,

    tu as raison c'est bien dlookup([N];"Table2").
    qu'es ce qui ne vas pas dans le résulat? avec cette syntaxe c'est bien le contenu du champ N qui est demandé de la table2.
    essaie autrement dfirst() si tu n'as pas de critère (1 seul enregistrement dans table2)


  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    C'est peut être idiot ce que je vais dire, mais... si on parle d'une requête, je suppose que tu crées une commande SQL.

    Dans ce cas, tu pourrais faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim strSelect as string
    Dim strFrom as string
    ...
    Dim nomChamp as String
    Dim numChamp as integer
     
    nomChamp = "monChamp"
    numChamp = table1[N]
     
    strSelect = "Select " & nomChamp & numChamp
    Puis combiner avec strFrom pour créer ta requête, non ?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    Bon, alors là, j'avoue ne plus rien comprendre...
    J'ai testé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RechDom("[" & [N] & "]";"Table2")
    et il me donne le bon résultat seulement pour deux enregistrements... quand N = 2, ça marche et pour les autres valeurs, rien...

    pour Geache : non je ne passe pas par du code, je suis dans une requête.

  13. #13
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    tu as bien un seul enregistrement pour table2?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    non non j'en ai plusieurs...
    Je viens d'ailleurs de trouver d'où venait l'erreur. Il y a 3 champs qui servent de liens entre la table1 et la table2. Et il faut les insérer en tant que critères dans la fonction de recherche. Les liens entre les deux tables ne suffisent pas.
    ne reste plus qu'à trouver la bonne syntaxe...

  15. #15
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    outre ces critères, s'il y a plusieurs enregistrements qui peuvent correspondre tu auras toujours le pb de n'obtenir de résultat.

    peut être qu'un dmax() pourrait simplement résoudre ce souci.

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

Discussions similaires

  1. [AC-2007] Récupérer une valeur de liste de formulaire comme nom de champ dans une requête
    Par sylviane dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 07/03/2015, 18h09
  2. Réponses: 6
    Dernier message: 14/06/2014, 19h08
  3. [AC-2013] RechDom() avec une Variable comme Nom de Champ
    Par (2t0m) dans le forum Access
    Réponses: 1
    Dernier message: 26/09/2013, 14h07
  4. utilisation d'une variable comme nom de colonne
    Par argonath dans le forum Développement
    Réponses: 11
    Dernier message: 13/08/2010, 14h43
  5. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12

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