VBA,MS Access:访问表格的Windows AD

VBA,MS Access:访问表格的Windows AD,vba,ms-access,Vba,Ms Access,我有一个MS Access数据库,其中有一个主表 20多个用户。它们的名称位于主表中的一列中。 我还创建了用户表(使用用户名lastname和winad ID) 我已经为数据更新和修改创建了一个拆分表单。涉及到一些VBA模块。 我正在做这个: -每次用户打开表单时,都会有只与他/她的Win AD ID名称关联的预筛选记录 -用户将无法查看/查询任何其他用户的记录 我们有人们用来登录机器的ID,我可以在VBA代码中使用它来实现上述目标吗 下面是我在组合框中筛选用户(项目经理)的方式: 'Check

我有一个MS Access数据库,其中有一个主表

20多个用户。它们的名称位于主表中的一列中。 我还创建了用户表(使用用户名lastname和winad ID) 我已经为数据更新和修改创建了一个拆分表单。涉及到一些VBA模块。 我正在做这个: -每次用户打开表单时,都会有只与他/她的Win AD ID名称关联的预筛选记录 -用户将无法查看/查询任何其他用户的记录

我们有人们用来登录机器的ID,我可以在VBA代码中使用它来实现上述目标吗

下面是我在组合框中筛选用户(项目经理)的方式:

'Check if there is a value for Project Manager and build filter string
If Not IsNull(Me.cmbProjMang) And Me.cmbProjMang <> "" Then
    If intFilterSet Then
        strFilter = strFilter & " AND "
    End If

    strFilter = strFilter & "[PM] = " & Chr(34) & Me.cmbProjMang & Chr(34)
    intFilterSet = 1
End If
'检查是否有Project Manager和生成筛选器字符串的值
如果不为null(Me.cmbProjMang)和Me.cmbProjMang“”,则
如果是intFilterSet,则
strFilter=strFilter&“和”
如果结束
strFilter=strFilter&“[PM]=”&Chr(34)&Me.cmbProjMang&Chr(34)
intFilterSet=1
如果结束
该功能(我的问题打印环境(“用户名”)的解决方案可能的一部分)是否添加在此处或其他子系统中

谢谢!
MichMich

获取用户ID并在
Form\u Load
上过滤表单

将其放在标准模块中:

Option Explicit

'Username
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function Username() As String
    On Error GoTo ErrProc

    Dim lnglen As Long, lngX As Long, strName As String

    strName = String(254, 0)
    lnglen = 255
    lngX = apiGetUserName(strName, lnglen)

    If lngX <> 0 Then Username = Left(strName, lnglen - 1)

Leave:
    On Error GoTo 0
    Exit Function

ErrProc:
    MsgBox Err.Description, vbCritical
    Resume Leave
End Function
Private Sub Form_Load()
    Dim user_ As String
        user_ = YourModuleName.Username

    With Me
        .Filter = "[Win AD ID]='" & user_ & "'"
        .FilterOn = True
    End With
End Sub