Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

utilisation de la meme table par deux utilisateurs

3 réponses
Avatar
Le meruvien
Bonjour a tous, apres avoir relaché un peut access, me revoila avec un
probleme que je n'avais pas approfondis!
Ma base est en reseau, mais le probleme, si deux personnes utilise en meme
temps le meme enregistrement, ça plante!
Donc je voudrai que quand le deuxieme utilisateur veut ouvrir la meme fiche
avec le meme numéro d'affaire, il est un message lui disant que cet
enregistrement est en cours de modif, et qu'il attende!
J'ai mis une variable public:
public code as string
et ensuite sur ouverture de mon form j'ai mis:
Dim codeform As String
codeform = "fichedeproposition" & Me!affaire
If code = codeform Then
DoCmd.OpenForm "message formulaire ouvert"
DoCmd.Close acForm, "fiche de proposition"
Cancel = True
Exit Sub
End If
code = codeform
Malheureusement ça marche pas, quand le 2eme utilisateur ouvre son form, il
s'emblerai qu'il ne tienne pas compte de la variable "code"



--

Roger
http://le-meruvien.skynetblogs.be/

3 réponses

Avatar
Argyronet
Bonjour,

1/ Le mode multi utilisateur est possible mais la MAJ est réservée au premier.
2/ Votre variable publique n'est pas initialisée dans votre exemple... donc,
ca ne peut pas marcher
3/ Vous n'arriverez pas à vos fins avec un tel code.
Il faut user d'un objet Recordset, tenter d'ecrire dans la table source du
formulaire avec une gestion d'erreur idoine pour provoquer l'erreur qui se
traduira par :
"Si vous ouvrez ce formulaire, vous ne pourrez pas mettre les données à jour
!"

L'idéal serait de boucler jusqu'à ce qu'il soit possible avec un message du
style :
"Voulez-vous qu'Access vous prévienne dès qu'il sera possible d'accéder à ce
formulaire ?"
Les idées ne manque pas...
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN-2742982442 )



Bonjour a tous, apres avoir relaché un peut access, me revoila avec un
probleme que je n'avais pas approfondis!
Ma base est en reseau, mais le probleme, si deux personnes utilise en meme
temps le meme enregistrement, ça plante!
Donc je voudrai que quand le deuxieme utilisateur veut ouvrir la meme fiche
avec le meme numéro d'affaire, il est un message lui disant que cet
enregistrement est en cours de modif, et qu'il attende!
J'ai mis une variable public:
public code as string
et ensuite sur ouverture de mon form j'ai mis:
Dim codeform As String
codeform = "fichedeproposition" & Me!affaire
If code = codeform Then
DoCmd.OpenForm "message formulaire ouvert"
DoCmd.Close acForm, "fiche de proposition"
Cancel = True
Exit Sub
End If
code = codeform
Malheureusement ça marche pas, quand le 2eme utilisateur ouvre son form, il
s'emblerai qu'il ne tienne pas compte de la variable "code"



--

Roger
http://le-meruvien.skynetblogs.be/





Avatar
Euclide
Une autre possibilité: utiliser une autre table T_Maj (
nomuser,
nomtable)

avant d'ouvrir l'enregistrement de la table TT avec ton login GG:
- select count(*) from T_maj where nomtable=TT

si la requete renvoi 0:
- insert into t_maj(nomuser, nomtable) values (GG, TT)
- ouvrir la fiche
- à la fin de la fiche, delete t_maj where nomuser=GG and nomtable=TT




Bonjour a tous, apres avoir relaché un peut access, me revoila avec un
probleme que je n'avais pas approfondis!
Ma base est en reseau, mais le probleme, si deux personnes utilise en meme
temps le meme enregistrement, ça plante!
Donc je voudrai que quand le deuxieme utilisateur veut ouvrir la meme fiche
avec le meme numéro d'affaire, il est un message lui disant que cet
enregistrement est en cours de modif, et qu'il attende!
J'ai mis une variable public:
public code as string
et ensuite sur ouverture de mon form j'ai mis:
Dim codeform As String
codeform = "fichedeproposition" & Me!affaire
If code = codeform Then
DoCmd.OpenForm "message formulaire ouvert"
DoCmd.Close acForm, "fiche de proposition"
Cancel = True
Exit Sub
End If
code = codeform
Malheureusement ça marche pas, quand le 2eme utilisateur ouvre son form, il
s'emblerai qu'il ne tienne pas compte de la variable "code"



--

Roger
http://le-meruvien.skynetblogs.be/





Avatar
Antoine Labusquière
Pour résoudre ce problème, tu ne dois pas passer par une variable, mais
plutôt par une valeur dans un table.
A l'ouverture du formulaire, tu mets dans un champ le nom de l'utilisateur
qui fait la modification, par exemple, comme ça, si un autre utilisateur
veut ouvrir le même enregistrement, il saura à qui s'adresser pour le
libérer.


"Le meruvien" a écrit dans le message de news:
46d54d3d$0$416$
Bonjour a tous, apres avoir relaché un peut access, me revoila avec un
probleme que je n'avais pas approfondis!
Ma base est en reseau, mais le probleme, si deux personnes utilise en meme
temps le meme enregistrement, ça plante!
Donc je voudrai que quand le deuxieme utilisateur veut ouvrir la meme
fiche avec le meme numéro d'affaire, il est un message lui disant que cet
enregistrement est en cours de modif, et qu'il attende!
J'ai mis une variable public:
public code as string
et ensuite sur ouverture de mon form j'ai mis:
Dim codeform As String
codeform = "fichedeproposition" & Me!affaire
If code = codeform Then
DoCmd.OpenForm "message formulaire ouvert"
DoCmd.Close acForm, "fiche de proposition"
Cancel = True
Exit Sub
End If
code = codeform
Malheureusement ça marche pas, quand le 2eme utilisateur ouvre son form,
il s'emblerai qu'il ne tienne pas compte de la variable "code"



--

Roger
http://le-meruvien.skynetblogs.be/