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


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2005
    Messages : 54
    Points : 34
    Points
    34
    Par défaut Erreur 3061 : Trop peu de paramètres.1 attendu
    Bonjour tout le monde,
    Je vous sollicite car j'ai un problème avec du code VBA et je n'arrive pas a trouver la solution.
    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
    14
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim sSQL As String
    Dim v1 As String
    v1 = 0
    Set db = CurrentDb
    sSQL = "Select * From RFicheOrganisationNumForm"
    Set rst = db.OpenRecordset(sSQL)
    rst.MoveFirst
    Do Until rst.EOF
    v1 = v1 + rst!NbStagiaires
    rst.MoveNext
    Loop
    Set rst = Nothing
    et mon erreur se situent sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rst = db.OpenRecordset(sSQL)
    Ma requete "RFicheOrganisationNumForm" affiche les enregistrements qui comportent le meme NumForm que mon formulaire actif. Mon but etant d'additionner le nombre de stagiaires de chaque enregistrement dans ma variable v1.
    Voila je pense avoir été clair mais n'hesitez pas à me poser des questions. Si vous voyez un autre moyen de parvenir à faire l'addition de mes stagiaires je suis preneur aussi

    Merci!

  2. #2
    Membre confirmé Avatar de milia
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2006
    Messages : 481
    Points : 532
    Points
    532
    Par défaut
    Je ne suis vraiment pas sûr mais tu n'aurais pas oublier le point virgule dans ta requête?

  3. #3
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Essaye d'ajouter un ";" à la fin de l'instruction SQL!
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 86
    Points : 62
    Points
    62
    Par défaut
    Bonsoir j'ai également le même message d'erreur avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim test As String
    sdat = DateSerial(Year(Now), Month(Now), Day(Now))
     
    myvar = [Forms]![Saisie AFCS  0706]![Réference Client]
    myvar1 = [Forms]![Saisie AFCS  0706]![Montant]
    myvar2 = [Forms]![Saisie AFCS  0706]![fdetail]
     
     
    test = "insert into [Autres Frais Correspondants] ( Numéro,[Autres Frais Correspondants / Valeurs cumulées],[Autres Frais Correspondants / Détails],FGAR, Swift, Mois,[Date saisie] ) VALUES (" & myvar & "," & myvar1 & "," & myvar2 & ",'0706'," & sdat & ")"
     
    CurrentDb().Execute test
    Alors que je ne l'ai pas avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim test As String
    sdat = DateSerial(Year(Now), Month(Now), Day(Now))
     
    myvar = [Forms]![Saisie AFCS  0706]![Réference Client]
    myvar1 = [Forms]![Saisie AFCS  0706]![Montant]
    myvar2 = [Forms]![Saisie AFCS  0706]![fdetail]
     
     
    test = "insert into [Autres Frais Correspondants] ( Numéro,[Autres Frais Correspondants / Valeurs cumulées],[Autres Frais Correspondants / Détails],FGAR, Swift, Mois,[Date saisie] ) VALUES (" & myvar & "," & myvar1 & "," & myvar1 & ",'0706'," & sdat & ")"
     
    CurrentDb().Execute test
    Quelqu'un pourrait il me dire d'ou vient mon probléme?

    Sachant que les données des champs Réference client et montant sont numérique celu ide fdétail est du texte?

  5. #5
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    salut
    essaie comme ça pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = "Select RFicheOrganisationNumForm.* From RFicheOrganisationNumForm;"
    @+

  6. #6
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Moi quand j'ai une ereur de ce type c'et que j'ai une faute dans l'instruction SQL. Tu es sur qu'elle est correcte, qu'il n'y a pas de fautes dans le nom de la requete. Essaye de créer une reqete ACCESS et de coller ta requete dans le mode SQL pour voir si lui il en veut bien
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  7. #7
    Invité
    Invité(e)
    Par défaut Un truc plus simple...
    Salut Deglingo37 (drôle de pseudo )

    Plutôt que d'utiliser ton code qui ne fonctionne pas, pourquoi n'utilises tu pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    V1 = DSum("NbStagiaires","RFicheOrganisationNumForm")
    ce qui est beaucoup plus rapide que de faire un seek dans ta table et d'additionner chaque valeur

    A+
    Dernière modification par Invité ; 25/07/2006 à 09h52.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2005
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Bonjour tout le monde,

    j'ai lu avec attention l'ensemble de vos réponses.

    Je ne suis vraiment pas sûr mais tu n'aurais pas oublier le point virgule dans ta requête?
    Après ca j'obtient la meme erreur.

    essaie comme ça pour voir:

    Code :
    sSQL = "Select RFicheOrganisationNumForm.* From RFicheOrganisationNumForm;"
    Idem

    Moi quand j'ai une ereur de ce type c'et que j'ai une faute dans l'instruction SQL. Tu es sur qu'elle est correcte, qu'il n'y a pas de fautes dans le nom de la requete. Essaye de créer une reqete ACCESS et de coller ta requete dans le mode SQL pour voir si lui il en veut bien
    Alors la je suis pas sur d'avoir compris ce que tu me demandé mais j'ai fait ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim sSQL As String
    Dim v1 As String
    v1 = 0
    Set db = CurrentDb
    sSQL = "SELECT TOperation.NumFormation, TOperation.NumOperation, TOperation.NbStagiaires FROM TOperation WHERE (((TOperation.NumFormation)=[forms]![FFicheOrganisation]![NumFormation]));"
    Set rst = db.OpenRecordset(sSQL)
    rst.MoveFirst
    Do Until rst.EOF
    v1 = v1 + rst!NbStagiaires
    rst.MoveNext
    Loop
    Set rst = Nothing
    Et malheuresement j'ai toujours la même erreur , et le plus étonant c'est que ma requete fonctionne quand le clique dessus elle renvoi bien des enregistrements.

    Je continu à chercher, je pense que je vais transformer ma requete en requete ajout dans une table pour ensuite baser mon recordset sur cette table. Je vous tient au courant!

  9. #9
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    Ecris plutôt ça ( en gras les changements) :

    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
    16
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim requete as DAO.queryDef
    Dim sSQL As String
    Dim v1 As String
    v1 = 0
    Set db = CurrentDb
    Set requete = db.createQueryDef("","Select ........;")
    Set rst = requete.OpenRecordset()
    rst.MoveFirst
    Do Until rst.EOF
    v1 = v1 + rst!NbStagiaires
    rst.MoveNext
    Loop
    Set rst = Nothing

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2005
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    Plutôt que d'utiliser ton code qui ne fonctionne pas, pourquoi n'utilises tu pas :

    Code :
    V1 = DSum("NbStagiaires
    ","RFicheOrganisationNumForm")
    Effectivement ca marche !! Trop fort! Des fois j'ai l'impression de me compliquer la vie

    Merci à tous pour toute ces réponses !!

    PS : J'ai bien pris des modifications en compte mariboo je garde la syntaxe sous le coude au cas ou j'en et besoin.

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 55
    Points : 40
    Points
    40
    Par défaut
    bonjour,

    ce serait intéressant de voir le SQL de ta requête : en effet, tu dis qu'elle fait référence à une valeur placée dans le formulaire actif, et c'est sûrement cette référence qui plante.

    Par exemple, voici le SQL de ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Table1 WHERE (Champ1 = [Formulaires]![MonForm]![Controle1]);
    et ce que tu devrais faire dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sSQL = "SELECT * " & _
      "FROM Table1 " & _
      "WHERE (Champ1 = " & Forms("MonForm").Controls("Controle1").Value & ");"
    à plus,

    gunico

  12. #12
    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 : 40
    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
    Une requête DAO ne peut pas faire appel à un controle directement dans son code SQL. Il faut concaténer la valeur du controle dans la source du recordset :

    Avant :

    "SELECT * FROM Client WHERE numClient=Forms![FrmClients]![Client]"
    Maintenant

    "SELECT * FROM Client WHERE numClient=" & Forms![FrmClients]![Client]
    Sans oublier le mot clé Me faisant référence au formulaire où s'éxecute le code. Faire attention aussi au type du champ, s'il s'agit d'un texte, il faut encadrer la valeur avec "", si c'est une date avec # (en la formatant au format américain)

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2005
    Messages : 54
    Points : 34
    Points
    34
    Par défaut
    D'accord, je pense avoir compris. En fait y'a quelque modifications en VBA. Je reste avec la methode de bruno mais j'ai bien noté la syntaxe à adopter si un jour j'en ai besoin.

    Un grand merci

  14. #14
    Membre du Club
    Homme Profil pro
    CHARGE ETUDES STATISTIQUES
    Inscrit en
    Août 2004
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CHARGE ETUDES STATISTIQUES
    Secteur : Santé

    Informations forums :
    Inscription : Août 2004
    Messages : 50
    Points : 49
    Points
    49
    Par défaut erreur 3061
    Bonjour,

    J'ai le même problème que certaines personnes en ACCESS 2010

    ci-joint mon code qui plante sur la ligne : Mon problème arrive sur la ligne db.execute strRequete, dbFailOnError

    Merci pour votre aide, je ne trouves pas
    Fichiers attachés Fichiers attachés

  15. #15
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Je te conseille d'afficher ce que contient ton StrSQL avec un Debug.print ou un MsgBox avant l'exécution de la requête pour voir ce que ce qui est renvoyé correspond à un code SQL correct.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

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

Discussions similaires

  1. [AC-2010] Erreur 3061 - trop peu de paramètres. 1 attendu.
    Par arr37 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 20/08/2014, 10h45
  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