首先,您从名为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]
虽然它的作用是将其输出为填充方形而不是复选标记或空白。我将三重状态设置为否。
如何将复选框附加到查询中,如果数据显示为是,那么它是一个复选标记,如果它显示不是它是一个空框?
答案 0 :(得分:1)
我理解你。
“在单击登录按钮后打开的表单上有一个注销按钮”,我们称之为frmLogout。你应该这样做:
frmLogout.RecordSource = "IsAdminQ"
然后,对于名为MyCheckbox的复选框,我们将其设置为:
Me.MyCheckbox.ControlSource = "IsAdmin"
你不能用这个:
Me.MyCheckbox.ControlSource = "[IsAdminQ].[IsAdmin]" ' <= here it's impossible.
在表格frmLogout上,未将IsAdminQ设置为.RecordSource,
在公共模块中,插入:
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。然后双击它在Access Navigation Pane中打开它。并查看查询的值。