sous formulaire en lecture seule

Le
dsf34
Bonjour à Tous

Access 2003
J'ai un formulaire principal qui contient 2 zones de liste déroulante
liées. Apres le choix effectuée dans la seconde zone de liste, le sous
formulaire affiche les données correspondantes.
L'accès à ce formulaire s'effectue après avoir saisi un nom d'utilisateur et
un mot de passe dans un formulaire parent.
En fonction de l'identifiant de l'utilisateur, je souhaite que le sous
formulaire puisse être en lecture seule ou pas.
En VBA, j'essaye de mettre la propriété "Type de Recordet" du sous
formulaire à "Instantané" selon l'identifiant de l'utilisateur.
Cependant, je n'y arrive pas. Je pense que je dois faire une erreur de
syntaxe, ou bien je n'écris pas la commande au bon moment
Si quelqu'un peut m'aider sur ce coup !

Merci
Amicalement
Didier
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jero
Le #21339471
Salut,
Vas voir du côté de AllowEdits.
Ex :
If IdUtilisateur="123" then
Forms!MachinTruc.AllowEdits=True
else
Forms!MachinTruc.AllowEditsúlse
EndIf
Autre :
If IdUtilisateur="123" then
docmd.Openform "MachinTruc",,,,acFormEdit
else
docmd.Openform "MachinTruc",,,,acFormReadOnly
endif
A+

"dsf34"
Bonjour à Tous

Access 2003
J'ai un formulaire principal qui contient 2 zones de liste déroulante
liées. Apres le choix effectuée dans la seconde zone de liste, le sous
formulaire affiche les données correspondantes.
L'accès à ce formulaire s'effectue après avoir saisi un nom d'utilisateur
et
un mot de passe dans un formulaire parent.
En fonction de l'identifiant de l'utilisateur, je souhaite que le sous
formulaire puisse être en lecture seule ou pas.
En VBA, j'essaye de mettre la propriété "Type de Recordet" du sous
formulaire à "Instantané" selon l'identifiant de l'utilisateur.
Cependant, je n'y arrive pas. Je pense que je dois faire une erreur de
syntaxe, ou bien je n'écris pas la commande au bon moment...
Si quelqu'un peut m'aider sur ce coup !

Merci
Amicalement
Didier
dsf34
Le #21344201
Bonjour Jero,

Merci pour cette solution. Malheureusement, cela ne fonctionne pas comme je
le souhaite. Le fait de mettre le formulaire en lecture seule, m'interdit
l'utilisation des listes déroulantes, et donc le contenu du sous formulaire
ne s'affiche pas.
Il faut donc que le formulaire soit en mode normal, et le sous formulaire en
lecture seule, selon le code d'accès saisi par l'utilisateur !
C'est pour cela que j'essaie d'utiliser la propriété "Type de Recordset" en
mode instantané.
As tu une autre piste à me proposer ?
voila ce que j'écris actuellement
-----------------------------
DoCmd.OpenForm ("F_Planning")
Forms![F_Planning]!SF_Planning.SourceObject = "SF_Planning"
Forms![F_Planning]![SF_Planning].Form.RecordSource = "R_Planning"
Forms![F_Planning]![SF_Planning].Form.RecordsetType = 2
------------------------------

Merci à tous
amicalement
Didier

"jero" wrote:

Salut,
Vas voir du côté de AllowEdits.
Ex :
If IdUtilisateur="123" then
Forms!MachinTruc.AllowEdits=True
else
Forms!MachinTruc.AllowEditsúlse
EndIf
Autre :
If IdUtilisateur="123" then
docmd.Openform "MachinTruc",,,,acFormEdit
else
docmd.Openform "MachinTruc",,,,acFormReadOnly
endif
A+

"dsf34"
> Bonjour à Tous
>
> Access 2003
> J'ai un formulaire principal qui contient 2 zones de liste déroulante
> liées. Apres le choix effectuée dans la seconde zone de liste, le sous
> formulaire affiche les données correspondantes.
> L'accès à ce formulaire s'effectue après avoir saisi un nom d'utilisateur
> et
> un mot de passe dans un formulaire parent.
> En fonction de l'identifiant de l'utilisateur, je souhaite que le sous
> formulaire puisse être en lecture seule ou pas.
> En VBA, j'essaye de mettre la propriété "Type de Recordet" du sous
> formulaire à "Instantané" selon l'identifiant de l'utilisateur.
> Cependant, je n'y arrive pas. Je pense que je dois faire une erreur de
> syntaxe, ou bien je n'écris pas la commande au bon moment...
> Si quelqu'un peut m'aider sur ce coup !
>
> Merci
> Amicalement
> Didier


.

jero
Le #21346061
Salut,
Un exemple avec une liste déroulante (mon form. est en lecture seule - pour
certains utilisateurs)
Private Sub lstRechercheVille_AfterUpdate()
'événement "Après mise à jour"
DoCmd.GoToControl "tIdVille"
DoCmd.FindRecord lstRechercheVille, acEntire, False, , False, acCurrent,
True
End Sub

Private Sub lstRechercheVille_Enter()
'événement "Entrée"
Me.AllowEdits = True
End Sub

Private Sub lstRechercheVille_Exit(Cancel As Integer)
'événement "Sortie"
Me.AllowEdits = False
End Sub
Dans la mesure où l'ordre des événements est : Enter => AfterUpdate => Exit,
il n'y a pas de pb.
On peut probablement (même certainement) procéder autrement, mais j'utilise
cette méthode depuis... la nuit des temps ;>) et ça marche...
A+
"dsf34"
Bonjour Jero,

Merci pour cette solution. Malheureusement, cela ne fonctionne pas comme
je
le souhaite. Le fait de mettre le formulaire en lecture seule, m'interdit
l'utilisation des listes déroulantes, et donc le contenu du sous
formulaire
ne s'affiche pas.
Il faut donc que le formulaire soit en mode normal, et le sous formulaire
en
lecture seule, selon le code d'accès saisi par l'utilisateur !
C'est pour cela que j'essaie d'utiliser la propriété "Type de Recordset"
en
mode instantané.
As tu une autre piste à me proposer ?
voila ce que j'écris actuellement
-----------------------------
DoCmd.OpenForm ("F_Planning")
Forms![F_Planning]!SF_Planning.SourceObject = "SF_Planning"
Forms![F_Planning]![SF_Planning].Form.RecordSource = "R_Planning"
Forms![F_Planning]![SF_Planning].Form.RecordsetType = 2
------------------------------

Merci à tous
amicalement
Didier

"jero" wrote:

Salut,
Vas voir du côté de AllowEdits.
Ex :
If IdUtilisateur="123" then
Forms!MachinTruc.AllowEdits=True
else
Forms!MachinTruc.AllowEditsúlse
EndIf
Autre :
If IdUtilisateur="123" then
docmd.Openform "MachinTruc",,,,acFormEdit
else
docmd.Openform "MachinTruc",,,,acFormReadOnly
endif
A+

"dsf34" news:

> Bonjour à Tous
>
> Access 2003
> J'ai un formulaire principal qui contient 2 zones de liste déroulante
> liées. Apres le choix effectuée dans la seconde zone de liste, le sous
> formulaire affiche les données correspondantes.
> L'accès à ce formulaire s'effectue après avoir saisi un nom
> d'utilisateur
> et
> un mot de passe dans un formulaire parent.
> En fonction de l'identifiant de l'utilisateur, je souhaite que le sous
> formulaire puisse être en lecture seule ou pas.
> En VBA, j'essaye de mettre la propriété "Type de Recordet" du sous
> formulaire à "Instantané" selon l'identifiant de l'utilisateur.
> Cependant, je n'y arrive pas. Je pense que je dois faire une erreur de
> syntaxe, ou bien je n'écris pas la commande au bon moment...
> Si quelqu'un peut m'aider sur ce coup !
>
> Merci
> Amicalement
> Didier


.

dsf34
Le #21351531
Bonjour Jero,

J'ai testé ta solution, et ça marche très bien comme ça !

Merci beaucoup
A+
Didier

"jero" wrote:

Salut,
Un exemple avec une liste déroulante (mon form. est en lecture seule - pour
certains utilisateurs)
Private Sub lstRechercheVille_AfterUpdate()
'événement "Après mise à jour"
DoCmd.GoToControl "tIdVille"
DoCmd.FindRecord lstRechercheVille, acEntire, False, , False, acCurrent,
True
End Sub

Private Sub lstRechercheVille_Enter()
'événement "Entrée"
Me.AllowEdits = True
End Sub

Private Sub lstRechercheVille_Exit(Cancel As Integer)
'événement "Sortie"
Me.AllowEdits = False
End Sub
Dans la mesure où l'ordre des événements est : Enter => AfterUpdate => Exit,
il n'y a pas de pb.
On peut probablement (même certainement) procéder autrement, mais j'utilise
cette méthode depuis... la nuit des temps ;>) et ça marche...
A+
Publicité
Poster une réponse
Anonyme