现场显示问题

时间:2011-07-25 04:45:59

标签: ms-access

我正在制定一个人事问责制,我有一个问题,就是让一个字段根据另一个表格中的值显示一个值,该表格是同一表格的子报告。

例如,我有一个选项卡式界面,第一个选项卡是人员,重要数据等的快照。我有一个列出保留信息的选项卡。该选项卡有一个子报告,该子报告链接到另一个存储员工的所有标志(不良操作)的表。这两个表通过关系链接在一起,将每个标志链接到单个员工。

我希望标题为FlagSnapshot的第一个标签上有一个字段,根据字段Flagged的值显示值Not FlaggedFlagStatus其他表。另一个表格中的字段FlagStatus的可能值为ActiveRemovedPermanent。同样,如果表FlagStatus中的字段Flags中的值等于Active,我希望表FlagSnapshot中的Personnel字段显示Flagged 。我还需要设置条件,以便如果表FlagStatus中的字段Flags的值为Removed,那么我需要字段FlagSnapshot来显示{{{ 1}}。字段Not Flagged中也有一些其他值,但字段FlagStatus中只有两个值。

此外,一名员工可能有多个标志,我需要确保将所有标志都考虑在内。如果表FlagSnapshot有两个或三个标志用于同一个员工,其中一个标识为Flags而另一个标记为Removed,则需要标记快照字段以显示值{{ 1}}。

我提前为长篇解释道歉。此外,这不是家庭作业,这是我正在努力使项目更容易跟踪的项目。

1 个答案:

答案 0 :(得分:1)

假设您已经规范化了数据结构(至少部分地),我会混合使用VBA和SQL。例如,我希望将表 FlagStatus 作为一个单独的表并链接到其他表。

第1步:将列优先级添加到列出所有FlagStatuses的FlagStatus表中: enter image description here

第2步:创建一个查询( GetFlagStatusQuery ),返回具有特定员工最高优先级的FlagStatus: enter image description here

第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])