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 d'exécution "3020" [Toutes versions]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Erreur d'exécution "3020"
    Bonjour,
    Je suis étudiant en métallurgie et actuellement en stage dans un laboratoire "Qualité Matériaux". Je ne suis donc pas un spécialiste de VBA.

    Une partie de mon travail consiste à améliorer leur base de donnée, développée sous Access 97 (N.B. : la version qui m'est fourni est Access 2007). Celle-ci permet notamment de récupérer des données d'une machine de traction.

    Une des améliorations, doit permettre en fonction du choix, effectué dans une liste déroulante "Echantillonable" (les choix sont : oui/non), de remplir automatiquement des champs d'une table "donnees" avec des informations sur les essais de traction à effectuer.
    Je récupère donc la valeur de la liste déroulante "Echantillonable" (soit 0 soit -1), appartenant au formulaire actif "IDENTIFICATION" et en fonction de la valeur, je souhaite écrire différentes valeurs dans le champ "Essai_traction" de la table (c'est une table liée) "donnees"

    Voici le code que j'ai écrit :

    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
    Private Sub Echantillonable_Change()
    Dim db As Database
    Dim rs As Recordset
    Dim transit As Single
    transit = Me!Echantillonable.Value
    If transit = 0 Then
        Set db = CurrentDb()
        Set rs = db.OpenRecordset("donnees")
        rs![Essai_traction] = "E1"
        rs.AddNew
        rs.Update
    Else
        Set db = CurrentDb()
        Set rs = db.OpenRecordset("donnees")
        rs![Essai_traction] = "E2"
        rs.AddNew
        rs.Update
     End If
    End Sub

    Mon problème est le suivant :
    Quand je sélectionne une des valeurs dans la liste déroulante il m'indique la phrase suivante :

    Erreur d'exécution "3020"
    Update ou CancelUpdate effectué sans appeler AddNew ni Edite


    Et quand le clique sur Débogage il me surligne en jaune rs![Essai_traction] =
    et m'indique : rs![Essai_traction] = Null

    Pouvez-vous m'apporter votre aide ?
    Je vous remercie

  2. #2
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    Il n'est pas possible de faire une affectation dans recordset avant d'avoir mentioné une édition.

    Par exemple pour qu'un enregistrement soit modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rs.Edit
    rs![Essai_traction] = "E1"
    rs.Update
    C'est au moment de l'instruction Update que l'enregistrement est mis à jour.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Je n'ai plus de messages d'erreur.
    Merci pour la rapidité de la réponse !

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

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