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 :

Erreur 3061 - trop peu de paramètres. 1 attendu. [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Erreur 3061 - trop peu de paramètres. 1 attendu.
    Bonjour à tous,

    Je sais que le sujet à été abordé 15 mille fois, mais je n'arrive pas à trouver une astuce qui me sorte de cette erreur.
    Donc si une bonne âme pouvait jetter un coup d'oeil sur mon code...

    Voici le code incriminé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    quEry1 = "SELECT IDVersion, SelectOutil FROM T_VersionOutil WHERE IDVersion IN (SELECT DISTINCT Methode FROM R_AssociationOutil) OR IDVersion IN (SELECT DISTINCT Machine FROM R_AssociationOutil) OR IDVersion IN (SELECT DISTINCT Plateforme FROM R_AssociationOutil)"
     
    Set oRst1 = CurrentDb.OpenRecordset(quEry1, dbOpenDynaset)
    Le bug vient de cette dernière ligne.

    La requête R_AssociationOutil comporte plusieurs champs dont :
    Methode (Numérique) | Machine (Numérique) | Plateforme (Numérique)

    Tous les outils sont référencés mélangés dans T_VersionOutil qui comprend les champs :
    IDVersion (Numérique, reprenant les réf. des 3 champs ci-dessus) | SelectOutil (Oui/Non)

    Le but est d'atteindre dans T_VersionOutil uniquement les SelectOutil des outils présents dans R_AssociationOutil.

    Je ne vois pas pourquoi il y a cette erreur. Les champs sont bons, ce n'est pas un problème de guillemet...

    Une idée ?
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour

    Generalement c'est du a une erreur dans l'orthographe du nom d'un des champs.

    La meilleur facon de debugger du SQL Access que je connaisse c'est d'executer ton code en mode debug jusqu'a ce que ton SQL soit pret puis de faire apparaitre la fenetre d'execution immediate ([Ctrl][g]) et de demander l'affichage du SQL (? NomTaVariableSQL [Enter]). Une fois le SQL affiche, tu le selectionnes, tu le copies puis tu le colles dans le SQL d'une nouvelle requete et tu demandes a Access d'executer cette requete. Quand ca pete c'est la qu'il faut corriger :-( ou du moins cela te donnes une piste.

    La meilleur facon d'ecrire du SQL Access que je connaisse c'est de laisser Access le faire pour toi en utilisant l'outil de creation de requete par glisser deplace. C'est generalement plus rapide que d'essayer de trouver la bonne syntaxe.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Contournement de problème
    Merci René,

    Je mets la conversation en "résolu" car je n'ai plus le problème, mais je m'en suis sortie en changeant complètement de logique pour arriver à mes fins. J'ai donc contourné le problème. La raison restera un mystère...

    Tes conseils ont permis que mes nouvelles reqêtes ne bogguent pas.
    A garder sous le coude !

    Bonne journée.

    PS :
    Dans mon ancien algo, l'élément de départ était une colonne unique d'un objet requête, comprenant plusieurs lignes (et donc plusieurs valeurs).
    Dans mon nouvel algo, l'élément de départ est un enregistrement simple d'une table, qui sert ensuite de filtre sur une table dont je réccupère une colonne etc. En gros il y a toujours au moins 2 champs par Table appelés (un champ filtrant et un champ filtré).
    L'erreur venait peut être de là.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Késako ???
    Bonjour à tous,

    (oui je rouvre mon sujet, c'est mal )

    Mais quelqu'un serait-il en mesure de m'expliquer ce qu'il y a derrière ce message d'erreur ?

    Depuis j'ai eu à implémenter d'autres requêtes SQL, et j'ai suivi les conseils de René : je les ai construites/écrites dans l'assistant Requêtes d'Access. Et quand le mode affichage affichait ce que je souhaitait, je recopiais le phrase pour la coller dans le module VB.

    Et il y a 1h, SURPRISE ! Cette erreur est réapparue.
    Pourtant ma requête ressort bien un tableau avec plein d'infos dedans...
    Mais comme en fait je ne comprend pas ce que le déboggeur veut dire par ce message, je ne vois pas bien comment je pourrai l'éviter.
    En gros, qu'est ce qu'un "paramètre" ?

    J'en appelle donc à la science des sages de ce forum.
    Merci.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 86
    Points : 74
    Points
    74
    Par défaut Pas assez d'infos
    bonjour,
    A chaque fois que j'ai ce message, cela vient d'une erreur soit dans les noms des champs, soit dans l'existence du champ dans la table soit aussi dans l'écriture de la requête.
    exemple pas de Where, que des And ou Or ou des And ou Or manquants.

    Il faudrait avoir le code qui va pas et la doc des tables.
    Logiquement un copié/collé de QBE vers vba ne devrait pas entraîner d'erreur sauf pour les cotes genre "" à la place de ''.
    A+
    Sellig60

  6. #6
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut La clef du mystère (maybe...)
    Bonjour,

    Alors, d'après de loooongues recherches sur le net, cela viendrait de l'appel de la requête R_AssociationOutil.

    En effet cette requête fait appel à la réponse d'une liste déroulante présente dans un formulaire.
    Et a priori, il est impossible d'appeler un objet requête dépendant dans un module indépendant ; mais c'est possible quand on utilise l'assistant de création d'objet requête... D'où le copier-coller qui ne fonctionne pas.

    Je m'en suis sortie cette fois en passant en paramètre de la fonction la valeur de la liste déroulante, et en ré-écrivant le code de R_AssociationOutil dans le code de ma nouvelle requête (quEry1). Du coup ça me fait un code méga long...
    C'est quand même dommage (voire très frustrant) d'avoir un objet existant parfait pour ce que l'on veut faire et de ne pas pouvoir l'utiliser...

    Cela vous semble-t-il pertinent ?
    (je demande au cas où ça m'arriverai une nouvelle fois ; je note aussi toutes les causes possible que vous avez énoncé, je suis sure que ça me servira plus tard)

    Merci beaucoup en tout cas.

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    impossible d'appeler un objet requête dépendant dans un module indépendant
    Je ne suis pas certain du problème que tu as rencontré mais voici ce que j'ai déja fait.

    Exemple de code utilisant un paramêtre venant d'un formulaire sans que le formulaire soit ouvert.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dim db as dao.database:set db=currentdb
    dim q as dao.querydef:set q=db.querydesf("MaQueryAvecParamFormulaire")
    q.parameters("[Forms]![MonForm]![MonChamp]")=UnValeur
    dim r as dao.recordset:set r=q.openrecordset
    'Code ici qui utilise r
    r.close:set r=nothing
    set q=nothing
    set db=nothing
    Note que même si le paramêtre n'est pas utilisé par la 1ère requète appelée on peut quand le lui passer et Access se débrouille avec pour le tranmettre à la requête qui en a besoin.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Stagiaire
    Inscrit en
    Mai 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 41
    Points : 23
    Points
    23
    Par défaut Merci
    Merci pour l'astuce.

    Elle ne m'a pas servi cette fois-ci, car j'ai du passer sur un autre sujet (j'ai donc gardé ma magouille), mais je reviendrai creuser si je retombe sur cette erreur.

    Et merci également de prendre de votre temps pour répondre aux discussions de ce forum !
    Ca rend vraiment service et on apprend des tas de choses.

    Bonne journée.

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

Discussions similaires

  1. Erreur 3061 : Trop peu de paramètres.1 attendu
    Par deglingo37 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 05/12/2014, 19h55
  2. [AC-2010] Erreur d'exécution 3061: Trop peu de paramêtre 1 attendu
    Par acpsc dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/05/2013, 22h01
  3. [AC-2000] Erreur d'exécution '3061': - Trop peu de paramètres. 2 attendu
    Par zoom61 dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/05/2013, 10h36
  4. Erreur 3061 Trop peu de paramètres 2 attendu
    Par pres62 dans le forum VBA Access
    Réponses: 5
    Dernier message: 22/06/2012, 12h14
  5. [AC-2002] erreur "3061 Trop peu de paramètres. 1 attendu"
    Par AntoineCIT dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/01/2010, 13h13

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