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
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    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
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    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.
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    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
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    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 878
    Points : 4 754
    Points
    4 754
    Par défaut
    J'utilise plutôt
    "Always look at the bright side of life." Monty Python.

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

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    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

    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 871
    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 871
    Points : 3 451
    Points
    3 451
    Par défaut
    Bonjour,

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

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  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 006
    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 006
    Points : 24 598
    Points
    24 598
    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,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    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
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    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 648
    Points : 14 626
    Points
    14 626
    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.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    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 ?
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  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 006
    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 006
    Points : 24 598
    Points
    24 598
    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 ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    Par défaut
    Bonjour,
    C'est quoi qui te gène dans les 2 commandes disponibles ?
    Voir mon post du Aujourd'hui, 00h35
    Merci
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  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 006
    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 006
    Points : 24 598
    Points
    24 598
    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
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    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
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  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 006
    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 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Parfait ! tu as donc la réponse.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    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 !
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

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

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    Par défaut
    Bonjour ,
    Quel est le déroulé de la commande
    DoCmd.RunCommand acCmdSaveRecord
    ?
    Quel code VBA écrire permettrant de la remplacer ?
    Merci
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  18. #18
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    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 878
    Points : 4 754
    Points
    4 754
    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 ...
    "Always look at the bright side of life." Monty Python.

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

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    Par défaut
    Visiblement, il est difficile pour certains de sortir des sillons ...
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  20. #20
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    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+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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