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 :

Erreur sur CurrentDb.execute [AC-2002]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Erreur sur CurrentDb.execute
    Bonjour,

    Suite à l'étude de vos tutoriels je dégage un code, utilisant Database.Execute ( Database étant oDb dans mon code) hors au cours de son éxécution une erreur survient:

    Erreur d'execution 3601

    Trop peu de paramétre 1 attendu.


    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
    Private Sub Bt_Modifier_Click()
     
    Dim Atelier As String
    Dim Section As Long
    Dim ID As Long
     
    Atelier = Txt_Atelier.Value
    Section = Txt_Section.Value
    ID = Lst_Atelier.Value
     
     
    If MsgBox("Voulez-vous confirmer la modification", vbQuestion + vbYesNo, "CONFIRMATION") = vbNo Then
    Exit Sub
    End If
     
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
     
    oDb.Execute "UPDATE T_Atelier SET Nom_Atelier =" & Txt_Atelier & " AND Section =" & Txt_Section & " WHERE ID_Atelier =" & ID & ""
     
    Debug.Print "Enregistrement affecté = " & oDb.RecordsAffected
     
     
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing
     
     
     
    End Sub
    Voyez vous une erreur dans mon code?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 600
    Points : 34 270
    Points
    34 270
    Par défaut
    bonjour,
    ta requête ne peut fonctionner en l'état
    un peu de lecture

    http://sqlpro.developpez.com/cours/sqlaz/dml/#LIV
    + le type de champ étant la chaine de caractères, il manque les ' pour encadrer les valeurs.
    ce qui transformera ta requête en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oDb.Execute "UPDATE T_Atelier SET Nom_Atelier ='" & Txt_Atelier & "' , Section ='" & Txt_Section & "' WHERE ID_Atelier =" & ID & ""
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Arf, je cherchais une mauvaise manipulation du code au mauvaise endroit :/

    Merci pour ta réponse, elle me servira pour des UPDATE plus grosse.

    En effet dans le cas présent, l'update ne fait réference que à un seul enregistrement, et j'ai donc utilisé une boucle, et le recordset en edit

    Je met le code, au cas cela pourrait être utiles à quelqu'un, j'ai testé, tout plein de manip avec des cas spéciaux, mais pas de bug donc c'est bon =)

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    ''/////////////////////////////////////////////////////////////////////////////////
    ''/////////////////////////////////////////////////////////////////////////////////
    ''Modifier Atelier
     
    Private Sub Bt_Modifier_Click()
     
    'Aprés avoir cliquer sur Bt_Ajout place le sélecteur sur la liste Lst_Atelier,
    'pour prendre en compte les champs concerné par l'ajout
    Lst_Atelier.SetFocus
     
    'Message box pour confirmer l'ajout
    'Action: Oui, Ajoute l'enregistrement
    'Action: Non, Annule la procédure d'enregistrement
    If MsgBox("Voulez-vous confirmer la modification?", vbQuestion + vbYesNo, "CONFIRMATION") = vbNo Then
    Exit Sub
    End If
     
     
    'Initialise les objets DAO
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    'Fixe les valeurs aux objets DAO
    Set oDb = CurrentDb 'Base de données courante
    'Affecte les enregistrements de la table T_Atelier quand l'ID de l'atelier est le même que celui de
    'Lst_Atelier, dans l'objet recordset oRst
    Set oRst = oDb.OpenRecordset("SELECT * FROM T_Atelier WHERE ID_Atelier =" & Lst_Atelier.Value & "")
     
    'Parcours tout les enregistrement
    While Not oRst.EOF
      'Passe en mode modification
      oRst.Edit
      'Affecte les champs
      oRst.Fields("Nom_Atelier").Value = Txt_Atelier.Value
      oRst.Fields("Section").Value = Txt_Section.Value
      'Met à Jour
      oRst.Update
      'Passe au suivant
      oRst.MoveNext
    Wend
     
    'Remet à zero tous les champs
    Txt_Atelier = ""
    Txt_Section = ""
    Txt_New_Atelier = ""
    Txt_New_Section = ""
    Lst_Atelier.Value = Lst_Atelier.DefaultValue
     
     
    'Ferme et mets à zero les objets DAO
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing
     
    End Sub

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

Discussions similaires

  1. Erreur sur GRANT EXECUTE
    Par charrynsasi dans le forum PL/SQL
    Réponses: 1
    Dernier message: 23/11/2013, 01h02
  2. erreur sur execution d'un script externe à l'application java.
    Par diamonds dans le forum EDI et Outils pour Java
    Réponses: 24
    Dernier message: 06/11/2009, 18h46
  3. [AC-2007] erreur sur " CurrentDb.Execute"
    Par gwems dans le forum VBA Access
    Réponses: 7
    Dernier message: 08/05/2009, 09h56
  4. erreur sur CurrentDb.Execute
    Par nath-0-0 dans le forum Access
    Réponses: 7
    Dernier message: 05/09/2006, 17h48
  5. [Pl/pgSQL] Erreur sur l'execution d'une fonction.
    Par Floréal dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 25/09/2005, 00h48

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