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 :

Message Erreur d'execution 3061 Trop peu de paramètres.5 attendu." lors de l'execution du code


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Par défaut Message Erreur d'execution 3061 Trop peu de paramètres.5 attendu." lors de l'execution du code
    Bonjour,
    Je veux récupérer la valeur du champ TOTAL_Envoi dans la variable résultat en code VBA, mais ma requête est complexe en exécutant le code j'obtiens le message d'erreur suivant:"Erreur d'execution 3061 Trop peu de paramètres.5 attendu." Que faire?

    Voilà mon code à exécuter:
    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
    Private Sub Commande0_Click()
    Dim requete As Recordset
    Dim sql As String
    Dim resultat As Long
    sql = "SELECT  TBL_MVT_CPT_A_MVT_CPT.Date_Mvt, TBL_DE_COMPTE.Nom_PDV_D_CPTE, TBL_DE_COMPTE.Prenom_PDV_D_CPTE, TBL_A_COMPTE.Nom_PDV, TBL_A_COMPTE.Prenom_PDV, TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt, Sum(TBL_MVT_CPT_A_MVT_CPT.Montant_Mvt) AS TOTAL_Envoi " & vbCrLf & _
    "FROM TBL_A_COMPTE INNER JOIN (TBL_DE_COMPTE INNER JOIN TBL_MVT_CPT_A_MVT_CPT ON TBL_DE_COMPTE.Num_Tel_D_CPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_D_CPTE) ON TBL_A_COMPTE.Num_Tel_A_COMPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_A_COMPTE " & vbCrLf & _
    "GROUP BY TBL_MVT_CPT_A_MVT_CPT.Date_Mvt, TBL_DE_COMPTE.Nom_PDV_D_CPTE, TBL_DE_COMPTE.Prenom_PDV_D_CPTE, TBL_A_COMPTE.Nom_PDV, TBL_A_COMPTE.Prenom_PDV, TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt " & vbCrLf & _
    "HAVING (((TBL_MVT_CPT_A_MVT_CPT.Date_Mvt)=[DONNER LA DATE MVT]) AND ((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER LE NOM DE COMPTE]) AND ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[DONNER LE PRENOM DE COMPTE])) OR (((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER LE NOM A COMPTE]) AND ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[DONNER LE PRENOM A COMPTE]) AND ((TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt)='Envoi')); "
     
    Set requete = CurrentDb.OpenRecordset(sql)
    requete.MoveFirst
    resultat = requete("TOTAL_Envoi")
    MsgBox ("voila" & resultat)
     
    End Sub
    cordialement,

  2. #2
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    Betacrack bonjour,


    Ta requête est cohérente et fonctionne tout à fait normalement. C'est en réalité ta logique dans la partie code VBA que les choses se compliquent.

    Pour utiliser mon code source corrigé, tu vas créer via l'assistant une requête (peu importe son contenu) que tu enregistreras sous le nom marequete (à toi d'adapter si nécessaire)

    ensuite tu transformeras ton code ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Commande0_Click()
    Dim requete As Recordset
    Dim sql As String
    Dim resultat As Long
    sql = "SELECT  TBL_MVT_CPT_A_MVT_CPT.Date_Mvt, TBL_DE_COMPTE.Nom_PDV_D_CPTE, TBL_DE_COMPTE.Prenom_PDV_D_CPTE, TBL_A_COMPTE.Nom_PDV, TBL_A_COMPTE.Prenom_PDV, TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt, Sum(TBL_MVT_CPT_A_MVT_CPT.Montant_Mvt) AS TOTAL_Envoi " & vbCrLf & _
    "FROM TBL_A_COMPTE INNER JOIN (TBL_DE_COMPTE INNER JOIN TBL_MVT_CPT_A_MVT_CPT ON TBL_DE_COMPTE.Num_Tel_D_CPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_D_CPTE) ON TBL_A_COMPTE.Num_Tel_A_COMPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_A_COMPTE " & vbCrLf & _
    "GROUP BY TBL_MVT_CPT_A_MVT_CPT.Date_Mvt, TBL_DE_COMPTE.Nom_PDV_D_CPTE, TBL_DE_COMPTE.Prenom_PDV_D_CPTE, TBL_A_COMPTE.Nom_PDV, TBL_A_COMPTE.Prenom_PDV, TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt " & vbCrLf & _
    "HAVING (((TBL_MVT_CPT_A_MVT_CPT.Date_Mvt)=[DONNER LA DATE MVT]) AND ((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER LE NOM DE COMPTE]) AND ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[DONNER LE PRENOM DE COMPTE])) OR (((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER LE NOM A COMPTE]) AND ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[DONNER LE PRENOM A COMPTE]) AND ((TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt)='Envoi')); "
    '
    CurrentDb.QueryDefs("marequete").sql = sql
    '
    DoCmd.OpenQuery "marequete", , acReadOnly
    '
    End Sub
    Pense à modifier si besoin la ligne 10 et 12 si le nom donnée à ta requête est différent de l'exemple.

    Ensuite, je pense que l'approche n'est pas bonne et que pour donner une dimension professionnelle à ton projet, il serait bon d'utiliser un formulaire de saisie avec des filtres de recherche, et ensuite afficher dans un sous formulaire les résultats.

    Donc pour commencer quelques lectures :

    1. http://access.developpez.com/faq/?page=SQL
    2. http://cafeine.developpez.com/access...echerchemulti/

    Ces deux premières lectures sont indispensables et nécessairement adaptées à ton cas :

    Pour progresser un peu plus, je te conseille aussi ces tutoriels :

    1. http://loufab.developpez.com/tutorie...che1/#LIX-C%22
      http://jeannot45.developpez.com/arti...multicriteres/


    Celui là est basé sur les techniques père-fils, mais te donnera un avant goût des possibilités d'Access

    http://claudeleloup.developpez.com/t...che-pere-fils/

    Cordialement

    JimBolion

  3. #3
    Membre averti
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Par défaut [AC-2007] Message Erreur d'execution 3061 Trop peu de paramètres.5 attendu." lors de l'execution du code
    Bonjour,
    En faite je veux récupérer la valeur du champ TOTAL_Envoi dans une variable après exécution de la requête
    Cordialement,

  4. #4
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    betacrack,

    Dans ce cas tu devras renseigner les filtres directement dans ton formulaire et les appeler dans les conditions de ta requête. Ensuite une fonction de domaine (cf. dlookup) te permettra de récupérer le résultat.

    Ce lien http://cafeine.developpez.com/access...echerchemulti/ te donnera les indications inécessaires

    Pour les fonctions de domaines ici :

    http://starec.developpez.com/tuto/fonctionsdomaines/

    Jimbolion

  5. #5
    Membre averti
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Par défaut [AC-2007] Message Erreur d'execution 3061 Trop peu de paramètres.5 attendu." lors de l'execution du code
    Bonjour Jimbolion!
    Comment utilisé la fonction Eval() dans une requête paramétrée pour que lors de l’exécution de la requête je puisse saisir les paramétres demandés à partir d'une inputbox
    Coridalement,

  6. #6
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    betacrack,

    Pourquoi utiliser la fonction Eval ?
    L'application de filtres sur un formulaire sera bien plus facile à utiliser !

    Jimbolion

Discussions similaires

  1. [AC-2007] Erreur d'execution 3061.Trop peu de parametres.3 attendu
    Par Charlis dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/10/2013, 09h18
  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 d'execution 3061.Trop peu de parametres.1 attendu
    Par morgan54 dans le forum VBA Access
    Réponses: 8
    Dernier message: 12/05/2008, 14h42
  5. Réponses: 4
    Dernier message: 15/03/2006, 16h47

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