J'ai créé un formulaire de connexion nommé login dans lequel le nom d'utilisateur est saisi dans la zone de texte txtEmployee. Je dois également afficher le même nom dans la deuxième page sous un autre formulaire MS Access.
DoCmd.OpenForm
vous permet de passer une valeur arbitraire comme dernier paramètre. Cette valeur est accessible dans le nouveau formulaire en tant que Me.OpenArgs
:
' Invoked by some Button on the first form '
Sub GoToSecondPage()
DoCmd.OpenForm "MySecondPage", acNormal, , , , , txtEmployee.Value
End Sub
' Second form '
Sub Form_Open(Cancel As Integer)
If Not IsNull(Me.OpenArgs) Then
lblShowEmployeeName.Value = Me.OpenArgs
End If
End Sub
(Exemple de code non testé.)
Vous pouvez passer une chaîne délimitée en tant que paramètre OpenArgs:
DoCmd.OpenForm FormName:="miscForm", OpenArgs:=paramstring
Voici une routine pour traiter une chaîne délimitée par des canaux passée en tant que paramètre à DoCmd.OpenForm:
Dim Pstring As Variant
If Len(Me.OpenArgs) > 0 Then
Pstring = Split(Me.OpenArgs, "|")
var1 = Pstring(0)
<etc..>
End If
Personnellement, je leur transmettrais les arguments ouverts lors de l'ouverture du formulaire. Par exemple, du formulaire A, vous écririez
DoCmd.OpenForm "frmB", , , , , acDialog,”Badger”
Et ensuite, dans l'événement OnOpen du formulaire B, vous pouvez capturer ce que vous avez envoyé comme ceci
Me.txtSomething=Me.OpenArgs
Vous ne pouvez passer qu’une chose, mais ce que je fais souvent, c’est de passer une chaîne délimitée par des tubes dans les arguments ouverts, puis de la scinder.
Quelques idées ...
Utilisez l'événement AfterUpdate du champ Nom d'utilisateur de connexion pour écrire le nom dans une variable globale, puis remplissez le champ de la deuxième page avec l'événement OnLoad.
Ou, si vous prévoyez de laisser le formulaire de connexion ouvert en permanence, vous pouvez définir la valeur par défaut du champ directement sur = [Forms]! [LogInForm]! [UserName]
Pourquoi ne pas créer une fonction publique qui stocke et/ou récupère une variable globale que vous stockez après l'exécution du premier formulaire? Cela vous permettrait non seulement de l'utiliser sur un ou plusieurs formulaires, mais également comme critère dans une requête (par exemple, pour renvoyer des enregistrements qui correspondent au nom d'utilisateur que vous avez stocké).
Je conviens que c'est une "fausse" sécurité, mais il y a aussi des moments où cela suffit à vos besoins. J'ai déjà implémenté cela auparavant, en faisant correspondre le nom d'utilisateur de la chaîne d'environnement à une entrée dans une table utilisateur.
BTW, je me réfère à cette fonctionnalité comme personnalisation, pas de sécurité.
Juste une pensée.