我正在制定一个人事问责制,我有一个问题,就是让一个字段根据另一个表格中的值显示一个值,该表格是同一表格的子报告。
例如,我有一个选项卡式界面,第一个选项卡是人员,重要数据等的快照。我有一个列出保留信息的选项卡。该选项卡有一个子报告,该子报告链接到另一个存储员工的所有标志(不良操作)的表。这两个表通过关系链接在一起,将每个标志链接到单个员工。
我希望标题为FlagSnapshot
的第一个标签上有一个字段,根据字段Flagged
的值显示值Not Flagged
或FlagStatus
其他表。另一个表格中的字段FlagStatus
的可能值为Active
,Removed
和Permanent
。同样,如果表FlagStatus
中的字段Flags
中的值等于Active
,我希望表FlagSnapshot
中的Personnel
字段显示Flagged
。我还需要设置条件,以便如果表FlagStatus
中的字段Flags
的值为Removed
,那么我需要字段FlagSnapshot
来显示{{{ 1}}。字段Not Flagged
中也有一些其他值,但字段FlagStatus
中只有两个值。
此外,一名员工可能有多个标志,我需要确保将所有标志都考虑在内。如果表FlagSnapshot
有两个或三个标志用于同一个员工,其中一个标识为Flags
而另一个标记为Removed
,则需要标记快照字段以显示值{{ 1}}。
我提前为长篇解释道歉。此外,这不是家庭作业,这是我正在努力使项目更容易跟踪的项目。
答案 0 :(得分:1)
假设您已经规范化了数据结构(至少部分地),我会混合使用VBA和SQL。例如,我希望将表 FlagStatus 作为一个单独的表并链接到其他表。
第1步:将列优先级添加到列出所有FlagStatuses的FlagStatus表中:
第2步:创建一个查询( GetFlagStatusQuery ),返回具有特定员工最高优先级的FlagStatus:
第3步:创建一个返回所需FlagStatus表示的函数。像这样:
Function GetFlagStatus(employeeId As Long) As String
Dim rs As Recordset
Dim qdf As QueryDef
FlagStatus = ""
Set qdf = CurrentDb.QueryDefs("GetFlagStatusQuery")
qdf.Parameters("EmployeeId_parameter") = employeeId
Set rs = qdf.OpenRecordset()
If rs.RecordCount > 0 Then
Select Case rs("FlagStatus")
Case "Active"
FlagStatus = "Flagged"
Case "Removed"
FlagStatus = "Not Flagged"
End Select
End If
End Function
第4步:在表单/选项卡中使用GetFlagStatus函数,并从表单中传递EmployeeId参数。例如,对于文本框控件,源代码为: = GetFlagStatus([EmployeeId])