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
.
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
.
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
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.
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
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.
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
.
J'utilise plutôt
Code : Sélectionner tout - Visualiser dans une fenêtre à part me.refresh
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
.
Bonjour,
Il y a aussi le "Me.Dirty = False"
Bonne journée
Bonjour,
Non ce n'est pas Refresh qui sauvegarde, c'est la sauvegarde automatique d'un formulaire lorsqu'on change d'enregistrement modifié.Je me rends compte qu'il n'y a pas qu'une façon d'y arriver. Me.Refresh permet de le faire aussi.
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
Présentement, je ne veux pas qu'Access change d'enregistrement. Donc Refresh n'est pas ce que je recherche.Non ce n'est pas Refresh qui sauvegarde, c'est la sauvegarde automatique d'un formulaire lorsqu'on change d'enregistrement modifié.
Je ne veux pas non plus rafraichir la source de données, ni Requery, ni changer d'enregistrement ou fermer le formulaire.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 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
.
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.
Donc, sorti de la commandeà mon avis, la "meilleure" ce serait la solution de départ : un bouton avec l'action sauvegarder enregistrement, il n'y a aucun autre moyen d'y arriver ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.RunCommand acCmdSaveRecord
.
Si il y a :
C'est quoi qui te gène dans les 2 commandes disponibles ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.dirty =false
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
Bonjour,
Voir mon post du Aujourd'hui, 00h35C'est quoi qui te gène dans les 2 commandes disponibles ?
Merci
.
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 me.dirty=false
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
Bonjour loufab,
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.Qu'est ce qui te gène dans les 2 méthodes proposées ?
D'où mon post initial de demande de suggestions d'idées
Merci
.
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
Peut-être pas tout à fait.Parfait ! tu as donc la réponse.
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 !
.
Bonjour ,
Quel est le déroulé de la commande?DoCmd.RunCommand acCmdSaveRecord
Quel code VBA écrire permettrant de la remplacer ?
Merci
.
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 ...
Visiblement, il est difficile pour certains de sortir des sillons ...Et la réponse https://www.developpez.net/forums/d2.../#post12010227 ?
.
Bonjour.
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.Visiblement, il est difficile pour certains de sortir des sillons ...
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.
Partager