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 :

ce message d'erreur : Trop peu de paramètres. 11 attendu. (Erreur 3061)


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 43
    Points : 30
    Points
    30
    Par défaut ce message d'erreur : Trop peu de paramètres. 11 attendu. (Erreur 3061)
    Bonjour,

    jai programmé un bouton Rechercher en access VBA, mais lorsque je l'execute j' obtient ce message d'erreur : Trop peu de paramètres. 11 attendu. (Erreur 3061).

    le code utilisé est:


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Dim strQuery As String
    Dim requete As DAO.Recordset
    Dim strCriteria As String
     
    Set bd = CurrentDb
    Set requete = bd.OpenRecordset("select décharge,préfectures,communes-concernées,population,tonnage-annuel,superficie,type-décharge,socièté,début-contrat,durée-contrat,coût-tonne,coût-annuel,EAP,appui,site-décharge from [décharge]")
    If requete.BOF Then
    MsgBox "Cette décharge n'existe pas"
     
    GoTo exit_sub
    End If
    strCriteria = "[Décharge] ='" & TXT1.Value & "'"
     
    requete.FindFirst (strCriteria)
    If requete.NoMatch Then
    MsgBox "Cette décharge n'existe pas"
     
     
    GoTo exit_sub
    End If
    TXT2 = requete("tonnage-annuel")
    TXT3 = requete("superficie")
    TXT4 = requete("type-décharge")
    TXT5 = requete("socièté")
    TXT6 = requete("population")
    TXT7 = requete("début-contrat")
    TXT8 = requete("durée-contrat")
    TXT9 = requete("coût-tonne")
    TXT10 = requete("coût-annuel")
    TXT11 = requete("communes-concernées")
    TXT12 = requete("préfectures")
    TXT13 = requete("EAP")
    TXT14 = requete("appui")
    TXT15 = requete("site-décharge")
     
     
    exit_sub:
    Set requete = Nothing
    Set bd = Nothing

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 768
    Points : 14 809
    Points
    14 809
    Par défaut
    Bonsoir,
    c'est encore et toujours le même problème : ne pas utiliser de mots ou de caractères réservés sous-peine de devoir mettre des crochets systématiquement à chaque nom de champ ou de table. Pour Access, "commune-concernée" est interprétée comme une expression du résultat de "commune moins concernée" ; comme il ne connait pas toujours tous ces champs, il considère que ce sont des paramètres. Ajoute des crochets '[ ]'à tous tes noms de champ contenant '-', ou mieux : renomme-les en utilisant '_' qui n'est pas réservé.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    Merci ça marche bien.
    J ai une autre question s'il vous plait, j ai créer 3 formulaires pour remplir une seule table. Le 1er form rempli le champs clé primaire et autres champs et les 2 autres form sont pour remplir le reste reste.
    Avec le 1er form je n est aucun problème, j ajoute les données en cliquant sur un bouton Ajouter ( codé en vba), l opération s'effectue correctement. mais pour les 2 autres form qu'on je clique sur le bouton ajouter,il m indique que l opération est effectué avec succès mais qu'on je cherche dans la table je trouve rien n est enregistré.
    Alors pouvez vous m indiquer comment enregistrer ces données dans l'enregistrement convenable???

    Merci

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 768
    Points : 14 809
    Points
    14 809
    Par défaut
    Avec le 1er form je n est aucun problème, j ajoute les données en cliquant sur un bouton Ajouter ( codé en vba), l opération s'effectue correctement. mais pour les 2 autres form qu'on je clique sur le bouton ajouter,il m indique que l opération est effectué avec succès mais qu'on je cherche dans la table je trouve rien n est enregistré.
    Pour mettre à jour ta table dans les 2 autres formulaires, il ne faut pas de bouton ajouter, mais des formulaires en mode Modification autorisée à Oui et un type Recordset en Feuille de réponse dynamique contenant le ou les enregistements de la table à modifier, ces enregistrements ayant été insérés avec ton 1er formulaire.

    Mais sans voir ton code et/ou ta base, il est difficile de t'aider.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    Voilà le code que j ai utilisé

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    If TXT5 = "" Or TXT6 = "" Or TXT11 = "" Or TXT12 = "" Or TXT13 = "" Then
    MsgBox "Vous devez saisir les données", vbExclamaTXTion, "erreur"
    Exit Sub
    End If
     
    Set bd = CurrentDb
    Set T = bd.OpenRecordset("Collecte+caractérisation+traitement")
    T.Edit
    T.Fields(24) = TXT6
    T.Fields(25) = TXT5
    T.Fields(26) = TXT12
    T.Fields(27) = TXT13
    T.Fields(28) = TXT11
     
     
    MsgBox "Ajout effectué avec succès"
     
    TXT0 = ""
    TXT2 = ""
    TXT3 = ""
    TXT4 = ""
    TXT5 = ""
    TXT6 = ""
    TXT7 = ""
    TXT11 = ""
    TXT12 = ""
    TXT13 = ""
    TXT0.SetFocus

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 768
    Points : 14 809
    Points
    14 809
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set T = bd.OpenRecordset("Collecte+caractérisation+traitement")
    T.Edit
    T.Fields(24) = TXT6
    T.Fields(25) = TXT5
    T.Fields(26) = TXT12
    T.Fields(27) = TXT13
    T.Fields(28) = TXT11
     
     
    MsgBox "Ajout effectué avec succès"
    comment identifies-tu l'enregistrement à mettre à jour ? A moins que ce ne soit le code pour ajouter (selon le MsgBox, c'est de l'ajout). De plus, il manque l'instruction T.Update (Mettre à jour) ou T.Addnew (Ajouter) après l'instruction : T.Fields(28) = TXT11

    Set T = bd.OpenRecordset("Collecte+caractérisation+traitement")
    Ce type de nommage est absolument à proscrire (évite d'utiliser les mots (code, nom ...) et caractères réservés (+, -, /, *, :, =, !) etc...
    Enfin, la bonne syntaxe pour mettre à jour ou ajouter est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set T = bd.OpenRecordset("Collecte+caractérisation+traitement",dbOpenDynaset)

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    Merci pour ta réponse.


    je savais ps comment identifier un enregistrement à partir d'une valeur qui est déjà ajoutée par le premier form. pouvez vous m aider.

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 768
    Points : 14 809
    Points
    14 809
    Par défaut
    D'après ta table Décharge, l'identifiant est le champ Décharge, si celui-ci est unique, aucun problème. Sinon, un numeroAuto est le champ idéal pour identifier de manière unique un enregistrement.
    Pour ce Recordset : Collecte+caractérisation+traitement, rien n'indique si c'est une table ou une requète, mais pour mettre à jour un enregistrement d'un recordset à partir d'un identifiant sélectionné, il te suffit de suivre cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim bd As Database
    Dim T as Recordset
    Set T = bd.OpenRecordset("select * from Collecte+caractérisation+traitement where identifiantTable =" & Me.identifiantFormulaire, dbOpenDynaset)
    If T.EOF = False Then
        T.Edit
        T.Fields(24) = TXT6
        T.Fields(25) = TXT5
        T.Fields(26) = TXT12
        T.Fields(27) = TXT13
        T.Fields(28) = TXT11
        T.Update
        MsgBox "Mise à jour effectuée avec succès"
    End If

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    ça fonctionne merci bien.

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

Discussions similaires

  1. Trop peu de paramètres. <nombre> attendu. (Erreur 3061)
    Par myriame dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/03/2012, 23h44
  2. Erreur: Trop peu de paramétres : 1 attendu
    Par tissam89 dans le forum VBA Access
    Réponses: 12
    Dernier message: 05/08/2011, 09h57
  3. message d'erreur:Trop peu de paramètres
    Par karinal dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 03/09/2007, 19h13
  4. Réponses: 3
    Dernier message: 04/04/2006, 19h59
  5. erreur trop peu de paramétre. un attendu ??
    Par Amandine62 dans le forum ASP
    Réponses: 3
    Dernier message: 25/01/2005, 15h00

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