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

Access Discussion :

Enregistrer en VBA les modifications portées au travers d'un formulaire dépendant


Sujet :

Access

  1. #1
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut Enregistrer en VBA les modifications portées au travers d'un formulaire dépendant
    Bonjour,
    Comment puis-je procéder dans le code VBA d'un évènement Click d'un bouton, pour enregistrer dans la base les changements portés par l'utilisateur au record courant dans un formulaire lié ?
    Merci
    .

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 346
    Points : 23 809
    Points
    23 809
    Par défaut
    Bonjour.

    Si tu es sur un formulaire lié, un formulaire ordinaire si tu n'as rien fait de spécial, tu peux utiliser DoCmd.RunCommand acCmdSaveRecord.

    Aussi, toujours pour un formulaire lié, il te suffit de changer d'enregistrement et Access va sauvegarder les infos (on dit qu'il est Auto Commit).

    Enfin si tu es sur un formulaire indépendant, c'est à dire qu'il n'y a pas de source de données associée, il faut que tu fasses du code VBA pour sauvegarder toi-même tes données.
    Quelque chose comme
    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
    dim db as doa.database: set db=currentdb
    dim rstData as dao.recordset: set rstData=db.openrecordset("NomTaTable", dbOpenDynaset)
    call rstData.findfisrt("[TaClef]=" & Me.TaClef)
     
    if not rstData.nomatch then
       rstData.edit
    else
       rstData.addnew
       rstData![TaClef]=me.TaClef
    end if
     
    rstData![TomChamp1]=me.TonChamp1
    rstData![TomChamp2]=me.TonChamp2
    '...
    rstData![TomChampN]=me.TonChampN
    rstData.update 'Ne pas oublié sinon Access n'enregistre pas.
    call rstData.close: set rstData=nothing
    call db.close: set db=nothing
    Note qu'il y a aussi des formulaires dit déconnectés, mais ils sont plus rarement utilisés donc précise si c'est ton cas.
    Ici une explication sur le sujet https://www.devguru.com/content/feat...DisconnRS.html.

  3. #3
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut
    Bonjour,

    En effet, je suis sur un formulaire ordinaire.

    Y aurait-il une autre manière de faire en VBA que d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdSaveRecord
    ?

    Merci pour tes explications sur les différentes méthodes. Elles me serviront à l'avenir suivant les cas à résoudre.

    Cordialement
    .

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    J'utilise plutôt

  5. #5
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut
    Bonjour,

    Je me rends compte qu'il n'y a pas qu'une façon d'y arriver. Me.Refresh permet de le faire aussi. Cependant, comment il procède reste un mystère.

    Je me demandais s'il y aurait encore d'autre manière de faire.

    Autres suggestions peut-être ?

    Merci

    .

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour,

    Il y a aussi le "Me.Dirty = False"

    Bonne journée

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 550
    Points
    24 550
    Par défaut
    Bonjour,

    Je me rends compte qu'il n'y a pas qu'une façon d'y arriver. Me.Refresh permet de le faire aussi.
    Non ce n'est pas Refresh qui sauvegarde, c'est la sauvegarde automatique d'un formulaire lorsqu'on change d'enregistrement modifié.

    https://learn.microsoft.com/fr-fr/of...s.form.refresh

    Lors d'un Refresh, l'enregistrement actif passe de l'état Dirty=True à False, la source de données est rafraichie.
    Faire un Requery, fermer le formulaire ou changer d'enregistrement provoquera la même chose.

    Cordialement,

  8. #8
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut
    Non ce n'est pas Refresh qui sauvegarde, c'est la sauvegarde automatique d'un formulaire lorsqu'on change d'enregistrement modifié.
    Présentement, je ne veux pas qu'Access change d'enregistrement. Donc Refresh n'est pas ce que je recherche.

    Lors d'un Refresh, l'enregistrement actif passe de l'état Dirty=True à False, la source de données est rafraichie.
    Faire un Requery, fermer le formulaire ou changer d'enregistrement provoquera la même chose.
    Je ne veux pas non plus rafraichir la source de données, ni Requery, ni changer d'enregistrement ou fermer le formulaire.

    Je voudrais uniquement enregistrer les modifications du record courant dans la BD sans changer de record courant.

    Quelle serait d'après vous la meilleure méthode ?

    MercI
    .

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    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 760
    Points : 14 795
    Points
    14 795
    Par défaut
    bonsoir,
    à mon avis, la "meilleure" ce serait la solution de départ : un bouton avec l'action sauvegarder enregistrement, sachant que c'est un leurre étant donné qu'Access n'utilise pas de Commit, en tout cas pas en IHM, dès qu'on quitte le formulaire ou qu'on change d'enregistrement la sauvegarde sera effective (sauf erreur de saisie, bien sûr) avec ou sans appui sur le bouton.

  10. #10
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut
    à mon avis, la "meilleure" ce serait la solution de départ : un bouton avec l'action sauvegarder enregistrement
    Donc, sorti de la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdSaveRecord
    , il n'y a aucun autre moyen d'y arriver ?
    .

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 550
    Points
    24 550
    Par défaut
    Citation Envoyé par star Voir le message
    ... il n'y a aucun autre moyen d'y arriver ?
    .
    Si il y a :
    C'est quoi qui te gène dans les 2 commandes disponibles ?

  12. #12
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut
    Bonjour,
    C'est quoi qui te gène dans les 2 commandes disponibles ?
    Voir mon post du Aujourd'hui, 00h35
    Merci
    .

  13. #13
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 550
    Points
    24 550
    Par défaut
    Visiblement on s'est mal compris.

    Qu'est ce qui te gène dans les 2 méthodes proposées ?

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdSaveRecord

  14. #14
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut
    Bonjour loufab,
    Qu'est ce qui te gène dans les 2 méthodes proposées ?
    Pour moi, il ne s'agit pas trop de savoir si une méthode est gênante ou pas, mais plutôt d'étudier ce qui est possible d'écrire en VBA Access pour atteindre le but rechercher.
    D'où mon post initial de demande de suggestions d'idées
    Merci
    .

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 550
    Points
    24 550
    Par défaut
    Parfait ! tu as donc la réponse.

  16. #16
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut
    Parfait ! tu as donc la réponse.
    Peut-être pas tout à fait.
    Je suis persuadé qu'il y a possibilité d'y arriver par d'autres moyens. Du moins une manière encore possible.
    Je laisse le file ouvert aux suggestions de ceux intéressés par le sujet
    Sait-on jamais !
    .

  17. #17
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut
    Bonjour ,
    Quel est le déroulé de la commande
    DoCmd.RunCommand acCmdSaveRecord
    ?
    Quel code VBA écrire permettrant de la remplacer ?
    Merci
    .

  18. #18
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    Et la réponse https://www.developpez.net/forums/d2.../#post12010227 ?
    Visiblement tu as l'intention de passer une bonne partie de ta vie sur ce sujet presqu'intéressant ...

  19. #19
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 049
    Points
    1 049
    Par défaut
    Visiblement, il est difficile pour certains de sortir des sillons ...
    .

  20. #20
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 346
    Points : 23 809
    Points
    23 809
    Par défaut
    Bonjour.

    Visiblement, il est difficile pour certains de sortir des sillons ...
    Tu peux peut-être aussi reprogrammer toi-même Access si les solutions disponibles ne sont pas suffisantes, en assembleur cela doit être faisable, mais cela dépasse probablement les capacités de la plus part des contributeurs de ce forum.
    Bon succès dans cette entreprise.

    A+

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/02/2020, 18h21
  2. Réponses: 2
    Dernier message: 24/04/2013, 14h48
  3. Créer un sous formulaire par code VBA
    Par Cabos dans le forum IHM
    Réponses: 7
    Dernier message: 07/06/2011, 14h18
  4. Réponses: 2
    Dernier message: 01/01/2007, 22h01
  5. [VBA-E]ajouter un textbox sur un formulaire par code?
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 22/03/2006, 09h33

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