OVH Cloud OVH Cloud

Transactions

5 réponses
Avatar
jbenchetrit
Bonjour je cherche un exemple d'utilisation des transactions sous Access
2003 :
Begintrans, Committrans et Rollback (ou Rollbacktrans)

Pour 1 formulaire qui s'appuie sur 1 table
Le formulaire affiche les enregs en visualisation.
un bouton permet la modif de l'enreg affiché
un bouton permet la création d'un nouvel enreg
un bouton Annulation permet ,dans le cas de modif ou d'ajout, de réaliser le
Rollback ou Rollbacktrans pour ne pas enregister ce qui a été entré par
l'utilisateur
un bouton permet l'enregistrement des modifs ou la création du nouvel enreg
Donc 4 boutons : Modif, Création, Annulation, Enregistrement
J'ajouterai également un bouton pour suppression d'un enreg.

La transaction est au niveau de l'enreg pas du formulaire.

Je désactiverai les boutons de défilement d'Access (en bas de formulaire).
Je mettrai une zone de liste déroulante pour sélection de l'enreg à
afficher.

Une bonne âme aurait-elle la bonté de me communiquer un exemple de code VBA
qui gérerait ce type de processus,
ou une idée d'écriture du code VBA.

MERCI d'avance de votre aide
Jacques

5 réponses

Avatar
Sylvain Lafontaine
À ma connaissance (mais je peux me tromper, comme toujours), Access ne
supporte pas la gestion directe des transactions par l'utilisateur pour les
formes liées à une source.

Évidemment, vous voulez peut-être parler de l'utilisation de formes
non-liées mais dans ce cas, si vous êtes déjà capable de créer vos propres
formes non-liées, je ne vois pas où vous pourriez avoir un problème pour
intégrer les transactions.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"jbenchetrit" wrote in message
news:45573e44$0$5067$
Bonjour je cherche un exemple d'utilisation des transactions sous Access
2003 :
Begintrans, Committrans et Rollback (ou Rollbacktrans)

Pour 1 formulaire qui s'appuie sur 1 table
Le formulaire affiche les enregs en visualisation.
un bouton permet la modif de l'enreg affiché
un bouton permet la création d'un nouvel enreg
un bouton Annulation permet ,dans le cas de modif ou d'ajout, de réaliser
le Rollback ou Rollbacktrans pour ne pas enregister ce qui a été entré par
l'utilisateur
un bouton permet l'enregistrement des modifs ou la création du nouvel
enreg
Donc 4 boutons : Modif, Création, Annulation, Enregistrement
J'ajouterai également un bouton pour suppression d'un enreg.

La transaction est au niveau de l'enreg pas du formulaire.

Je désactiverai les boutons de défilement d'Access (en bas de formulaire).
Je mettrai une zone de liste déroulante pour sélection de l'enreg à
afficher.

Une bonne âme aurait-elle la bonté de me communiquer un exemple de code
VBA qui gérerait ce type de processus,
ou une idée d'écriture du code VBA.

MERCI d'avance de votre aide
Jacques



Avatar
jbenchetrit
Bonjour,

MERCI de votre réponse.
Je retiens qu'il n'est pas possible de gérer les transactions dans un
formulaire.
Une donnée est enregistrée dans la table dès la sortie du champ
correspondant dans le formulaire.
Donc galère pour revenir en arrière.

MERCI
Jacques
========================================== "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
À ma connaissance (mais je peux me tromper, comme toujours), Access ne
supporte pas la gestion directe des transactions par l'utilisateur pour les
formes liées à une source.

Évidemment, vous voulez peut-être parler de l'utilisation de formes
non-liées mais dans ce cas, si vous êtes déjà capable de créer vos propres
formes non-liées, je ne vois pas où vous pourriez avoir un problème pour
intégrer les transactions.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"jbenchetrit" wrote in message
news:45573e44$0$5067$
Bonjour je cherche un exemple d'utilisation des transactions sous Access
2003 :
Begintrans, Committrans et Rollback (ou Rollbacktrans)

Pour 1 formulaire qui s'appuie sur 1 table
Le formulaire affiche les enregs en visualisation.
un bouton permet la modif de l'enreg affiché
un bouton permet la création d'un nouvel enreg
un bouton Annulation permet ,dans le cas de modif ou d'ajout, de réaliser
le Rollback ou Rollbacktrans pour ne pas enregister ce qui a été entré
par l'utilisateur
un bouton permet l'enregistrement des modifs ou la création du nouvel
enreg
Donc 4 boutons : Modif, Création, Annulation, Enregistrement
J'ajouterai également un bouton pour suppression d'un enreg.

La transaction est au niveau de l'enreg pas du formulaire.

Je désactiverai les boutons de défilement d'Access (en bas de
formulaire).
Je mettrai une zone de liste déroulante pour sélection de l'enreg à
afficher.

Une bonne âme aurait-elle la bonté de me communiquer un exemple de code
VBA qui gérerait ce type de processus,
ou une idée d'écriture du code VBA.

MERCI d'avance de votre aide
Jacques







Avatar
J-Pierre
Bonjour,

Si, il est possible de gérer les transactions dans un formulaire. Sylvain a raison, en ce qui concerne les MAJ automatiques
(forms liés à une source), tu ne peux pas, puisque justement, c'est automatique.

Par contre, si tu modifies tes données par code VBA, oui, là, ça devient possible, même sur les données de ta source.

Mais le but d'une transaction est de définir un ensemble de MAJ qui seront soit toutes exécutées, soit aucune, ce qui permet
de maintenir l'intégrité de ta base si une "opération logique" nécessite la MAJ de plusieurs tables.

BeginTrans....

'MAJ de mes différentes tables
...
Je ne suis pas content: Rollbacktrans, toutes les MAJ depuis BeginTrans sont annulées
Je suis content: Committrans, les MAJ sont définitives.

Mais ça, c'est durant l'exécution d'une procédure évènementielle, l'utilisateur n'intervient pas.

Si tu veux utiliser des boutons, cela veut dire que ta transaction resterait en suspens jusqu'à ce que l'utilisateur décide de
valider/annuler, ce qui peut se produire, l'utilisateur ayant fait la MAJ à 11h45, lorsque qu'il revient de déjeuner et après
la réunion de 14 à 16 h, soit 16h15.

Je subodore des problèmes de performance, de verrouillage d'enregistrement etc......
Et pour que ça marche, il faut passer par ADO, pour DAO, je ne sais pas, et avec DoCmd.RunSQL je suis quasiment certain que
ça ne marche pas.

Si j'ai bien compris, ce que tu veux faire est différent, et je ne vois pas comment faire.

J-Pierre

"jbenchetrit" a écrit dans le message de news: 45581fe9$0$27378$
Bonjour,

MERCI de votre réponse.
Je retiens qu'il n'est pas possible de gérer les transactions dans un formulaire.
Une donnée est enregistrée dans la table dès la sortie du champ correspondant dans le formulaire.
Donc galère pour revenir en arrière.

MERCI
Jacques
========================================== > "Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a écrit dans le message de news:

À ma connaissance (mais je peux me tromper, comme toujours), Access ne supporte pas la gestion directe des transactions par
l'utilisateur pour les formes liées à une source.

Évidemment, vous voulez peut-être parler de l'utilisation de formes non-liées mais dans ce cas, si vous êtes déjà capable
de créer vos propres formes non-liées, je ne vois pas où vous pourriez avoir un problème pour intégrer les transactions.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"jbenchetrit" wrote in message news:45573e44$0$5067$
Bonjour je cherche un exemple d'utilisation des transactions sous Access 2003 :
Begintrans, Committrans et Rollback (ou Rollbacktrans)

Pour 1 formulaire qui s'appuie sur 1 table
Le formulaire affiche les enregs en visualisation.
un bouton permet la modif de l'enreg affiché
un bouton permet la création d'un nouvel enreg
un bouton Annulation permet ,dans le cas de modif ou d'ajout, de réaliser le Rollback ou Rollbacktrans pour ne pas
enregister ce qui a été entré par l'utilisateur
un bouton permet l'enregistrement des modifs ou la création du nouvel enreg
Donc 4 boutons : Modif, Création, Annulation, Enregistrement
J'ajouterai également un bouton pour suppression d'un enreg.

La transaction est au niveau de l'enreg pas du formulaire.

Je désactiverai les boutons de défilement d'Access (en bas de formulaire).
Je mettrai une zone de liste déroulante pour sélection de l'enreg à afficher.

Une bonne âme aurait-elle la bonté de me communiquer un exemple de code VBA qui gérerait ce type de processus,
ou une idée d'écriture du code VBA.

MERCI d'avance de votre aide
Jacques











Avatar
J-Pierre
Pour compléter ma réponse, si tu définis dans les propriétés de ton formulaire:
Cycle: enregistrement en cours
Access ne fera plus de MAJ automatique. Tu devras gérer avec des boutons et du code tes fonctions Insérer enreg/Modifier
enreg/Supprimer enreg/Annuler les modifs et sans doute intervenir sur certains évènements comme avant MAJ.

Cela ne te permettra toujours pas de revenir en arrière, mais au moins, tu pourras demander confirmation, faire tes propres
contrôles, etc....

Et là, à la limite, rien ne t'interdit de sauvegarder ton enregistrement et/ou les infos nécessaires pour pouvoir annuler les
opérations précedemment effectuées.

J-Pierre
Avatar
jbenchetrit
MERCI J-Pierre de tes conseils.
Le pb des maj automatiques c'est de retrouver la base avec des enregs non
voulus.
Je vais étudier Cycle: enregistrement en cours
Encore Merci
Jacques
========================================== "J-Pierre" a écrit dans le message
de news:
Pour compléter ma réponse, si tu définis dans les propriétés de ton
formulaire:
Cycle: enregistrement en cours
Access ne fera plus de MAJ automatique. Tu devras gérer avec des boutons
et du code tes fonctions Insérer enreg/Modifier enreg/Supprimer
enreg/Annuler les modifs et sans doute intervenir sur certains évènements
comme avant MAJ.

Cela ne te permettra toujours pas de revenir en arrière, mais au moins, tu
pourras demander confirmation, faire tes propres contrôles, etc....

Et là, à la limite, rien ne t'interdit de sauvegarder ton enregistrement
et/ou les infos nécessaires pour pouvoir annuler les opérations
précedemment effectuées.

J-Pierre