2011-07-25 33 views
2

我正在處理一個人事責任制度,並且我有一個問題,那就是根據另一個表格中的值顯示值,該表格是同一表格的子報表。字段顯示問題

例如,我有一個選項卡式界面,第一個選項卡是人物,重要數據等的快照。我有一個列出保留信息的選項卡。該選項卡有一個子報告,鏈接到另一個存儲員工所有標誌(不利行爲)的表格。這兩個表格通過關係鏈接在一起,將每個標誌鏈接到單個員工。

我想有標題爲基於場FlagStatus從其他表中的值的FlaggedNot FlaggedFlagSnapshot顯示一個值的第一個選項卡的字段。 FlagStatus從另一個表格的字段可能的值有Active,RemovedPermanent。所以再次,如果表Flags中的字段FlagStatus中的值等於Active,我希望Personnel中的FlagSnapshot字段顯示Flagged。我還需要設置條件,以便如果表Flags中的字段FlagStatus的值爲Removed,則需要字段FlagSnapshot顯示Not Flagged的值。在FlagStatus字段中也有一些其他值,但在字段FlagSnapshot中只有兩個值。

此外,一名員工有可能擁有多個標誌,並且我需要確保將所有標誌都考慮在內。如果表Flags對同一員工有兩個或三個標誌,其中一個標識爲Removed,另一個標識爲Active,則需要標誌快照字段顯示值Flagged

對於長時間的解釋,我提前道歉。另外,這不是家庭作業,這是我正在努力工作的一個項目,使事情更容易跟蹤。

+0

您是否必須將值存儲在FlagSnapshot字段中?似乎是多餘的,因爲您可以在需要時在窗體上顯示值。 – JeffO

回答

1

假設你有規範化的數據結構(至少部分),我會與VBA和SQL混合使用。例如,我希望將表FlagStatus作爲一個單獨的表並鏈接到其他表。

步驟1:添加列優先到FlagStatus表中列出了所有FlagStatuses: enter image description here

步驟2:創建一個查詢(GetFlagStatusQuery)是具有最高優先級返回FlagStatus了特別是員工: enter image description here

第3步:C創建一個返回所需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功能表單/標籤,並從形式傳遞僱員參數。例如,對於文本框控件,源代碼將爲:= GetFlagStatus([EmployeeId])