Access - grupos

 
Vista:

grupos

Publicado por junior (8 intervenciones) el 31/08/2006 19:10:50
hola a todos os quisiera ve si me podrian proporcionar un poco de ayuda, se que hay una funcion en access para ver el usuario que es la de current user no se si habria alguna similar para que me muestre el usuario y al grupo al que pertenece, lo intente con una funcion pero no me salio.. por su ayuda gracias.

que tengan un buen dia.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Obtener el usuario y su grupo de pertenencia

Publicado por Alejandro (4142 intervenciones) el 25/07/2023 00:21:13
Para obtener el nombre del usuario y su grupo de pertenencia en Access, puedes utilizar una combinación de funciones y objetos proporcionados por el entorno de ejecución de Access. La función que te puede ayudar es `Environ()`, la cual permite obtener información del entorno del sistema operativo. Para obtener el usuario y el grupo al que pertenece, sigue estos pasos:

1. Obtener el nombre del usuario:
Para obtener el nombre del usuario actual, utiliza la función `Environ("USERNAME")`. Esta función devuelve el nombre de usuario del sistema operativo actual.

1
2
Dim nombreUsuario As String
nombreUsuario = Environ("USERNAME")

2. Obtener el grupo de pertenencia del usuario:
Access no proporciona una función directa para obtener el grupo de pertenencia del usuario. Sin embargo, puedes utilizar la API de Windows para obtener esta información. Para ello, deberás crear una función personalizada en un módulo de VBA que llame a la API de Windows para obtener los grupos de seguridad del usuario actual.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Option Compare Database
Option Explicit
 
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function LookupAccountName Lib "advapi32.dll" Alias "LookupAccountNameA" (ByVal lpSystemName As String, ByVal lpAccountName As String, ByVal Sid As Long, cbSid As Long, ByVal ReferencedDomainName As String, cbReferencedDomainName As Long, peUse As Long) As Long
Private Declare Function GetLengthSid Lib "advapi32.dll" (ByVal pSid As Long) As Long
Private Declare Function FreeSid Lib "advapi32.dll" (ByVal pSid As Long) As Long
Private Declare Function IsValidSid Lib "advapi32.dll" (ByVal pSid As Long) As Long
 
Private Const ERROR_NONE_MAPPED As Long = 1332
Private Const ERROR_INSUFFICIENT_BUFFER As Long = 122
 
Public Function GetCurrentUserGroups() As String
    Dim sid As Long
    Dim sidSize As Long
    Dim strSID As String * 1024
    Dim strDomain As String * 255
    Dim strUser As String * 255
    Dim dwSizeDomain As Long
    Dim dwSizeUser As Long
    Dim sidType As Long
    Dim groups() As String
    Dim i As Integer
 
    ReDim groups(0)
 
    strUser = String(255, 0)
    dwSizeUser = 255
    If GetUserName(strUser, dwSizeUser) <> 0 Then
        strUser = Left$(strUser, InStr(1, strUser, Chr(0)) - 1)
        strDomain = String(255, 0)
        dwSizeDomain = 255
        sidSize = 0
        If LookupAccountName(vbNullString, strUser, 0, sidSize, strDomain, dwSizeDomain, sidType) = 0 Then
            If Err.LastDllError = ERROR_INSUFFICIENT_BUFFER Then
                strDomain = Left$(strDomain, InStr(1, strDomain, Chr(0)) - 1)
                sid = VarPtr(strSID)
                sidSize = GetLengthSid(sid)
                If sidSize <> 0 And IsValidSid(sid) <> 0 Then
                    If LookupAccountName(vbNullString, strUser, sid, sidSize, strDomain, dwSizeDomain, sidType) <> 0 Then
                        If sidType = 1 Then ' SidTypeUser
                            ReDim Preserve groups(1)
                            groups(0) = strUser
                            groups(1) = strDomain
                        End If
                    End If
                End If
                FreeSid sid
            End If
        End If
    End If
 
    GetCurrentUserGroups = Join(groups, "\")
End Function

3. Obtener el nombre de usuario y su grupo:
Finalmente, puedes combinar ambas funciones para obtener el nombre del usuario y su grupo de pertenencia en Access.

1
2
3
4
5
Dim nombreUsuario As String
Dim grupoUsuario As String
 
nombreUsuario = Environ("USERNAME")
grupoUsuario = GetCurrentUserGroups()

Con estas líneas de código, `nombreUsuario` contendrá el nombre del usuario actual y `grupoUsuario` contendrá el nombre del grupo al que pertenece el usuario. Asegúrate de haber importado la función `GetCurrentUserGroups` en un módulo de VBA para que esté disponible en tu base de datos de Access.

Espero que esta solución te sea útil. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar