OVH Cloud OVH Cloud

Test si enregistrement modifié

6 réponses
Avatar
Gilbert
Bonjour,

Comment peut-on savoir si un enregistrement est en cours de modification par
un autre utilisateur?
C'est dans un formulaire où le sélecteur d'enregistrement n'est pas affiché,
donc où l'on ne voit pas le O barré qui s'affiche dans ce cas.


Merci d'avance

Gilbert

6 réponses

Avatar
David PONDA
Salut Gilbert, c'est un peu difficile a mettre au point car c'est du pur
VBAx, je dis bien VBA(x) :) car tu va devoir travailler avc les tables et
les objets cacher d'Acces ce qui va te compliquer l'affaire... je pourrais
t'aider si tu aimes faire du copie-coller, mais pur un debut je prefere que
tu crees une table ControlUser, puis tu y ajoute des champs tels que :
UserID, FormName, FieldName et a chaque fois qu'un utilisateur ouvre un
formulaire, tu y enregistre son nom, le nom du Forma et le nom du champ du
form dans lequel il est en train de travailler, ainsi comme c'est une simple
table Access, grace aux requetes d'actions et de mise a jour tu peux
controler et savoir que fait tel ou tel user dans tel ou tel formulaire et
tel ou tel enregistrement... (champ du form)

@+

"Gilbert" a écrit dans le message de news:

Bonjour,

Comment peut-on savoir si un enregistrement est en cours de modification
par
un autre utilisateur?
C'est dans un formulaire où le sélecteur d'enregistrement n'est pas
affiché,
donc où l'on ne voit pas le O barré qui s'affiche dans ce cas.


Merci d'avance

Gilbert




Avatar
Gilbert
Merci de ta réponse, mais n'y-a-t'il pas moyen de tester une propriété de
l'enregistrement?
Si Access peut afficher un signe interdisant la modif, on doit bien pouvoir
le tester aussi, Non?

Gilbert


"David PONDA" a écrit dans le message de
news:em$
Salut Gilbert, c'est un peu difficile a mettre au point car c'est du pur
VBAx, je dis bien VBA(x) :) car tu va devoir travailler avc les tables et
les objets cacher d'Acces ce qui va te compliquer l'affaire... je pourrais
t'aider si tu aimes faire du copie-coller, mais pur un debut je prefere
que

tu crees une table ControlUser, puis tu y ajoute des champs tels que :
UserID, FormName, FieldName et a chaque fois qu'un utilisateur ouvre un
formulaire, tu y enregistre son nom, le nom du Forma et le nom du champ du
form dans lequel il est en train de travailler, ainsi comme c'est une
simple

table Access, grace aux requetes d'actions et de mise a jour tu peux
controler et savoir que fait tel ou tel user dans tel ou tel formulaire et
tel ou tel enregistrement... (champ du form)

@+

"Gilbert" a écrit dans le message de news:

Bonjour,

Comment peut-on savoir si un enregistrement est en cours de modification
par
un autre utilisateur?
C'est dans un formulaire où le sélecteur d'enregistrement n'est pas
affiché,
donc où l'on ne voit pas le O barré qui s'affiche dans ce cas.


Merci d'avance

Gilbert








Avatar
Eric
Bonsoir,

Etant de nature curieux, serait-il possible de savoir ce qu'est du 'pur
VBAx' ?
Merci d'avance.

... c'est un peu difficile a mettre au point car c'est du pur
VBAx, je dis bien VBA(x) :)

@+




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
David PONDA
:)
salut, quand je dis pur VBAx = VBA Extended (VBA Etendu)
voila, en ce qui concerne ta question... je pense que tu dois en faite
chercher a connaitre le numero de l'enregistrement en cour et essayer de
jongler avec ca pour determiner si dans une autre appli liée a la meme table
on est positionner dans le meme enregistrement puis le reste... c'est du
simple VBA :)

ok bon en pratique ca donne ca...

A cet effet, on crée les deux fonctions suivantes:

Function EnregActif()
' Objectif: déterminer le numéro de l'enregistrement affiché par rapport au
recordset source du formulaire
EnregCour = Me.CurrentRecord
End Function


Function NbEnreg()
' Objectif: calculer le nombre d'enregistrements dans la source du
formulaire
NbEnreg = Me.RecordsetClone.RecordCount
End Function


Dans le formulaire on crée une zone de texte dont la source est :

=EnregActif() & " sur " & NbEnreg()

Autre solution:
Plus simple, mais qui ne fonctionne que pour un formulaire affiché en mode
"simple", la zone de texte aura pour propriété Source l'expression suivante:

=[CurrentRecord] & " sur " & Count(*)

Dans la feuille des propriétés d'un formulaire, Il est en effet possible de
référencer des propriétés et des fonctions dans une expression.

jongle avec ce code et tu y arriveras


"Eric" a écrit dans le message de news:

Bonsoir,

Etant de nature curieux, serait-il possible de savoir ce qu'est du 'pur
VBAx' ?
Merci d'avance.

... c'est un peu difficile a mettre au point car c'est du pur VBAx, je
dis bien VBA(x) :)

@+




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Gilbert
Bonsoir,

En fait j'ai une base sur laquelle travaillent simultanément plusieurs
utilisateurs. Si 2 personnes utilisent le même formulaire sur le même
enregistrement, l'un des 2 est bloqué (ne peut pas faire de modif).
C'est OK comme ça, mais je voudrais pouvoir le signaler à l'utilisateur
d'une quelconque manière car rien ne l'avertit qu'il ne peut pas faire de
modif..
Comme je n'affiche pas le sélecteur d'enregistrement, le O barré n'apparait
pas.

Gilbert

"David PONDA" a écrit dans le message de
news:
:)
salut, quand je dis pur VBAx = VBA Extended (VBA Etendu)
voila, en ce qui concerne ta question... je pense que tu dois en faite
chercher a connaitre le numero de l'enregistrement en cour et essayer de
jongler avec ca pour determiner si dans une autre appli liée a la meme
table

on est positionner dans le meme enregistrement puis le reste... c'est du
simple VBA :)

ok bon en pratique ca donne ca...

A cet effet, on crée les deux fonctions suivantes:

Function EnregActif()
' Objectif: déterminer le numéro de l'enregistrement affiché par rapport
au

recordset source du formulaire
EnregCour = Me.CurrentRecord
End Function


Function NbEnreg()
' Objectif: calculer le nombre d'enregistrements dans la source du
formulaire
NbEnreg = Me.RecordsetClone.RecordCount
End Function


Dans le formulaire on crée une zone de texte dont la source est :

=EnregActif() & " sur " & NbEnreg()

Autre solution:
Plus simple, mais qui ne fonctionne que pour un formulaire affiché en mode
"simple", la zone de texte aura pour propriété Source l'expression
suivante:


=[CurrentRecord] & " sur " & Count(*)

Dans la feuille des propriétés d'un formulaire, Il est en effet possible
de

référencer des propriétés et des fonctions dans une expression.

jongle avec ce code et tu y arriveras


"Eric" a écrit dans le message de news:

Bonsoir,

Etant de nature curieux, serait-il possible de savoir ce qu'est du 'pur
VBAx' ?
Merci d'avance.

... c'est un peu difficile a mettre au point car c'est du pur VBAx, je
dis bien VBA(x) :)

@+




--
A+
Eric
http://www.mpfa.info/
Archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr








Avatar
David PONDA
Salut Gil,
Cette reponse je pense l'avoir repondu plus haut... en fait essaye de creer
une table avec trois champs :
Table TestVerrou
champ1 => IDUser ----pour enregistrer un ID de l'utilisateur
champ2 => FormUser ---- pour enregistrer le formulaire ds lequel travail le
user
champ3 => CurrEnr ---- pour enregistrer l'enregistrement ds le formulaire en
question

puis une succession de requetes SQL d'action, de selection et de maj et test
tu px y arriver
@+
c'est l'une des technique que j'ai utiliser et ca marche :)

"Gilbert" a écrit dans le message de news:
er$
Bonsoir,

En fait j'ai une base sur laquelle travaillent simultanément plusieurs
utilisateurs. Si 2 personnes utilisent le même formulaire sur le même
enregistrement, l'un des 2 est bloqué (ne peut pas faire de modif).
C'est OK comme ça, mais je voudrais pouvoir le signaler à l'utilisateur
d'une quelconque manière car rien ne l'avertit qu'il ne peut pas faire de
modif..
Comme je n'affiche pas le sélecteur d'enregistrement, le O barré
n'apparait
pas.

Gilbert

"David PONDA" a écrit dans le message de
news:
:)
salut, quand je dis pur VBAx = VBA Extended (VBA Etendu)
voila, en ce qui concerne ta question... je pense que tu dois en faite
chercher a connaitre le numero de l'enregistrement en cour et essayer de
jongler avec ca pour determiner si dans une autre appli liée a la meme
table

on est positionner dans le meme enregistrement puis le reste... c'est du
simple VBA :)

ok bon en pratique ca donne ca...

A cet effet, on crée les deux fonctions suivantes:

Function EnregActif()
' Objectif: déterminer le numéro de l'enregistrement affiché par rapport
au

recordset source du formulaire
EnregCour = Me.CurrentRecord
End Function


Function NbEnreg()
' Objectif: calculer le nombre d'enregistrements dans la source du
formulaire
NbEnreg = Me.RecordsetClone.RecordCount
End Function


Dans le formulaire on crée une zone de texte dont la source est :

=EnregActif() & " sur " & NbEnreg()

Autre solution:
Plus simple, mais qui ne fonctionne que pour un formulaire affiché en
mode
"simple", la zone de texte aura pour propriété Source l'expression
suivante:


=[CurrentRecord] & " sur " & Count(*)

Dans la feuille des propriétés d'un formulaire, Il est en effet possible
de

référencer des propriétés et des fonctions dans une expression.

jongle avec ce code et tu y arriveras


"Eric" a écrit dans le message de news:

Bonsoir,

Etant de nature curieux, serait-il possible de savoir ce qu'est du 'pur
VBAx' ?
Merci d'avance.

... c'est un peu difficile a mettre au point car c'est du pur VBAx, je
dis bien VBA(x) :)

@+




--
A+
Eric
http://www.mpfa.info/
Archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr