Access - Quiero mostrar unos registros determinados........

 
Vista:

Quiero mostrar unos registros determinados........

Publicado por El Fari (10 intervenciones) el 02/12/2002 11:54:44
Hola.Es del tema de antes.Yo lo que quiero es que según qué tipo de usuarios se conecten,que muestren unos registros u otros.Pero no en plan,"si el usuario es Pepito que muestre los de Madrid"nada más..eso es muy fácil...yo quiero hacer exáctamente eso,pero no con usuarios que te creas tu en una tabla usuarios,por ejemplo,sino hacer esto con los usuarios reales que tiene el sistema,(administradores,usuarios avanzados,Maria Perez,Antonio Sanchez...por ejemplo)
Vamos que lo que quiero es saber cómo puedo leer yo los usuarios que windows tiene registrados...entonces la aplicación empezaria diciendo"qué usuario eres tu"(y que sacara todos los usuarios del sistema,lo que decia antes:Administradores,Usuarios Avanzados,Maria Perez,etc) y en función de cual de ellos sea pues que luego muestre unos registros u otros(pero bueno,eso ya lo haria yo por programa)...cómo narices se leen los usuarios del sistema??!!! en qué fichero,registro,o lo que sea se pueden encontrar? aghhh
Espero que me ayudeis,y me deis respuestas concretas a mi problema.Gracias..ciaooo
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

Quiero mostrar unos registros determinados........

Publicado por Alejandro (4142 intervenciones) el 25/04/2023 20:15:56
Para leer los usuarios del sistema en Access, puedes utilizar la función de Windows API "NetUserEnum". Esta función te permitirá obtener una lista de los usuarios y grupos definidos en el sistema.

Aquí te dejo un ejemplo de cómo podrías utilizar la función NetUserEnum en Access para obtener una lista de los usuarios del sistema:

1. Agrega un módulo nuevo en Access y nómbralo "WinAPI".

2. Agrega el siguiente código al módulo:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
Option Explicit
 
Private Declare PtrSafe Function NetUserEnum _
Lib "netapi32.dll" ( _
ByVal servername As LongPtr, _
ByVal level As Long, _
ByRef bufptr As LongPtr, _
ByVal prefmaxlen As Long, _
ByRef entriesread As Long, _
ByRef totalentries As Long, _
ByRef resume_handle As LongPtr) _
As LongPtr
 
Private Declare PtrSafe Function NetApiBufferFree _
Lib "netapi32.dll" ( _
ByVal buffer As LongPtr) _
As LongPtr
 
Private Declare PtrSafe Function lstrcpyW _
Lib "kernel32" ( _
ByVal lpString1 As LongPtr, _
ByVal lpString2 As LongPtr) _
As LongPtr
 
Private Declare PtrSafe Function lstrlenW _
Lib "kernel32" ( _
ByVal lpString As LongPtr) _
As Long
 
Private Type USER_INFO_0
    usri0_name As LongPtr
End Type
 
Public Function GetUsers() As String()
 
    Dim bufptr As LongPtr
    Dim entriesread As Long
    Dim totalentries As Long
    Dim resume_handle As LongPtr
    Dim bufsize As Long
    Dim user_info() As USER_INFO_0
    Dim i As Long
 
    bufsize = 1024
    bufptr = 0
 
    'Obtiene la información de usuario del sistema
    If NetUserEnum(ByVal 0&, 0, bufptr, bufsize, entriesread, totalentries, resume_handle) = 0 Then
        'Asigna el buffer de memoria al array de usuario
        ReDim user_info(entriesread - 1) As USER_INFO_0
        lstrcpyW VarPtr(user_info(0).usri0_name), bufptr
        For i = 1 To entriesread - 1
            lstrcpyW VarPtr(user_info(i).usri0_name), bufptr + i * LenB(user_info(0))
        Next i
        'Libera la memoria del buffer
        NetApiBufferFree bufptr
    End If
 
    'Convierte los nombres de usuario a una matriz de cadenas
    ReDim result(entriesread - 1) As String
    For i = 0 To entriesread - 1
        result(i) = String$(lstrlenW(user_info(i).usri0_name) \ 2, 0)
        lstrcpyW StrPtr(result(i)), user_info(i).usri0_name
    Next i
 
    GetUsers = result
 
End Function

3. En tu formulario o informe, puedes llamar a la función "GetUsers" para obtener una lista de los usuarios del sistema. Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Form_Load()
 
    Dim users() As String
    Dim user As String
 
    'Obtiene la lista de usuarios del sistema
    users = GetUsers()
 
    'Muestra la lista de usuarios en la ventana de depuración
    For Each user In users
        Debug.Print user
    Next user
 
End Sub

Con este código, podrás obtener una lista de los usuarios del sistema y luego usar esta información para usarla en tu aplicación de Access y mostrar los registros correspondientes según el usuario que haya iniciado sesión.

Para hacer esto, debes primero obtener el nombre de usuario actual usando la función "Environ". Por ejemplo:

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

Luego, puedes comparar este nombre de usuario con la lista de usuarios del sistema que obtuviste con la función "GetUsers". Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim users() As String
users = GetUsers()
 
Dim isAdmin As Boolean
isAdmin = False
 
For Each user In users
    If user = "Administrador" Then
        isAdmin = True
        Exit For
    End If
Next user
 
If isAdmin Then
    'Mostrar los registros para el administrador
Else
    'Mostrar los registros para un usuario normal
End If

En este ejemplo, se busca el nombre de usuario "Administrador" en la lista de usuarios del sistema y se establece una bandera "isAdmin" en "True" si se encuentra. Luego, se utiliza esta bandera para decidir qué registros mostrar.

Puedes adaptar este código para comparar el nombre de usuario actual con otros nombres de usuario en la lista de usuarios del sistema y mostrar los registros correspondientes según sea necesario.
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