0

首先,您从一个名为 LoginF 的表单开始。一旦您选择了您的登录 ID 和密码;并登录它从表 LoginIntoT 中获取您选择的登录 ID 的数据,并使用以下代码使用所述数据创建查询:

   On Error Resume Next
           DoCmd.DeleteObject acQuery, "IsAdminQ"
   On Error GoTo Err_LoginBtn_Click

     Dim qdef As DAO.QueryDef
       Set qdef = CurrentDb.CreateQueryDef("IsAdminQ", _
                                           "SELECT IsAdmin " & _
                                           "FROM LoginInfoT " & _
                                           "WHERE EmployeeID = " & LoginCmBx.Value)


    Exit_LoginBtn_Click:
    DoCmd.Close acForm, "LoginF", acSaveNo
            DoCmd.OpenForm "MenuF"
       Exit Sub
    Err_LoginBtn_Click:
       MsgBox Err.Description
       Resume Exit_LoginBtn_Click

从那里在您登录后的查询中只有 1 列和 1 行;意思是一个数据。此数据是一个是/否字段,是或否取决于您登录的身份。

在您单击登录按钮后打开的表单上,它有一个注销按钮。注销按钮将您带到上一个登录表单,并删除查询 (IsAdminQ)。

我想要做的是在表单上附加一个是/否按钮来获取该数据,并在查询中输出是或否。

我试过把它放在它的控制源中:

=[IsAdminQ].[IsAdmin]

尽管这样做是将其输出为填充的正方形而不是复选标记或空白。我将三重状态设置为否。

我如何将复选框附加到查询中,所以如果数据说是,那么它是一个复选标记,如果它说不是,它是一个空框?

4

1 回答 1

1

我理解你。

“在你点击登录按钮后打开的表单上有一个注销按钮”,我们称之为frmLogout。你应该这样做:

解决方案一:

frmLogout.RecordSource = "IsAdminQ"

然后对于名为 MyCheckbox 的复选框,我们将其设置为:

Me.MyCheckbox.ControlSource = "IsAdmin"

你不能使用这个:

Me.MyCheckbox.ControlSource = "[IsAdminQ].[IsAdmin]"  ' <= here it's impossible.

解决方案二:

在没有将 IsAdminQ 设置为 .RecordSource 的情况下,在 frmLogout 表单上,

在公共模块中,插入:

Function GetLoginStateIsAdmin()
'
  Dim rst As DAO.Recordset

  Set rst = CurrentDb.OpenRecordSet("IsAdminQ")

  GetLoginStateIsAdmin = Nz(rst(0), False)

  Set rst = Nothing
'
End Function

然后在任何形式的私有模块中,如frmLogout:

Private Sub Form_Open(Cancel As Integer)
'
  Me.MyCheckbox.Value = GetLoginStateIsAdmin()
'
End Sub

在设计模式中另外设置它:

Me.MyCheckbox.TripleState = false

并检查是否已在登录步骤中成功创建查询 IsAdminQ。并通过双击它在访问导航窗格中打开它。并查看查询的值。

于 2013-11-06T13:05:05.457 回答