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

Identification des utlisateurs

2 réponses
Avatar
Vincent BD
Bonjour,
Je suis débutant en vba et je cherche de l'aide.
Je voudrais que lorsqu'un utilisateur ouvre la BD son UserID soit recherché
dans une query "UserNameTS" contenant les UserID des différents utilisateurs
avec un autre champ [UserIDBD] qui contient le prénom de l'utilisateur,
celui-ci étant utilisé dans la BD.
J'y arrive en utilisant UserName = DLookup("[UserIDBD]", "UserNameTS",
"[NomUtil]='" & UserID & "'")
Mais lorsque l'utilisateur n'est pas repris dans dans la query, je voudrais
que la BD se ferme.
Or là, j'ai une erreur 2486 : Impossible d'excécuter cette action pour
l'instant".

Voici le code complet :
Option Compare Database
Option Explicit

Public Declare Function NetworkGetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function UserName() As String
Dim strUsername As String
Dim UserID As String
Dim lngResult As Long
strUsername = String$(255, 32)
lngResult = NetworkGetUserName(strUsername, 255)
UserID = Left(strUsername, InStr(strUsername, Chr(0)) - 1) 'Zero
terminated

If Nz(DLookup("[UserIDBD]", "UserNameTS", "[NomUtil]='" & UserID &
"'"), "") <> "" Then

UserName = DLookup("[UserIDBD]", "UserNameTS", "[NomUtil]='" &
UserID & "'")

Else

DoCmd.Quit

End If
End Function
--
D'avance merci

2 réponses

Avatar
Eric
Bonjour,

Quand appelles-tu la fonction UserName() ?
Car par le biais de la macro AutoExec ou via un formulaire (sur
chargement ou ouverture, je n'ai pas ce problème.

Vincent BD a écrit :
Bonjour,
Je suis débutant en vba et je cherche de l'aide.
Je voudrais que lorsqu'un utilisateur ouvre la BD son UserID soit recherché
dans une query "UserNameTS" contenant les UserID des différents utilisateurs
avec un autre champ [UserIDBD] qui contient le prénom de l'utilisateur,
celui-ci étant utilisé dans la BD.
J'y arrive en utilisant UserName = DLookup("[UserIDBD]", "UserNameTS",
"[NomUtil]='" & UserID & "'")
Mais lorsque l'utilisateur n'est pas repris dans dans la query, je voudrais
que la BD se ferme.
Or là, j'ai une erreur 2486 : Impossible d'excécuter cette action pour
l'instant".

Voici le code complet :
Option Compare Database
Option Explicit

Public Declare Function NetworkGetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function UserName() As String
Dim strUsername As String
Dim UserID As String
Dim lngResult As Long
strUsername = String$(255, 32)
lngResult = NetworkGetUserName(strUsername, 255)
UserID = Left(strUsername, InStr(strUsername, Chr(0)) - 1) 'Zero
terminated

If Nz(DLookup("[UserIDBD]", "UserNameTS", "[NomUtil]='" & UserID &
"'"), "") <> "" Then

UserName = DLookup("[UserIDBD]", "UserNameTS", "[NomUtil]='" &
UserID & "'")

Else

DoCmd.Quit

End If
End Function



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Vincent BD
Désolé du retard.

Cette fonction est appelée à l'ouverture de la BD via la macro "AutoExec"
lorsque dans un fichier log est inscrit l'identification de l'utilisateur et
les date et heure d'ouverture, via une requête.
--
Merci


"Eric" a écrit :

Bonjour,

Quand appelles-tu la fonction UserName() ?
Car par le biais de la macro AutoExec ou via un formulaire (sur
chargement ou ouverture, je n'ai pas ce problème.

Vincent BD a écrit :
> Bonjour,
> Je suis débutant en vba et je cherche de l'aide.
> Je voudrais que lorsqu'un utilisateur ouvre la BD son UserID soit recherché
> dans une query "UserNameTS" contenant les UserID des différents utilisateurs
> avec un autre champ [UserIDBD] qui contient le prénom de l'utilisateur,
> celui-ci étant utilisé dans la BD.
> J'y arrive en utilisant UserName = DLookup("[UserIDBD]", "UserNameTS",
> "[NomUtil]='" & UserID & "'")
> Mais lorsque l'utilisateur n'est pas repris dans dans la query, je voudrais
> que la BD se ferme.
> Or là, j'ai une erreur 2486 : Impossible d'excécuter cette action pour
> l'instant".
>
> Voici le code complet :
> Option Compare Database
> Option Explicit
>
> Public Declare Function NetworkGetUserName Lib "advapi32.dll" _
> Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
>
> Function UserName() As String
> Dim strUsername As String
> Dim UserID As String
> Dim lngResult As Long
> strUsername = String$(255, 32)
> lngResult = NetworkGetUserName(strUsername, 255)
> UserID = Left(strUsername, InStr(strUsername, Chr(0)) - 1) 'Zero
> terminated
>
> If Nz(DLookup("[UserIDBD]", "UserNameTS", "[NomUtil]='" & UserID &
> "'"), "") <> "" Then
>
> UserName = DLookup("[UserIDBD]", "UserNameTS", "[NomUtil]='" &
> UserID & "'")
>
> Else
>
> DoCmd.Quit
>
> End If
> End Function

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