2011-05-11 40 views
0

我有一個MS Access查詢,顯示官員ID與測試成績和他們採取每種類型的年度認證測試的日期。但是,我試圖按官員ID和每個官員的單行列出他們每次進行的測試類型的日期,以便我可以在他們將要再次進行相同類型的測試時進行標記。軍官不會在同一天進行所有類型的測試,並且通常不會在其他軍官同一天進行。舉例來說,一名軍官可能有資格在一天內進行白天拍攝和夜間拍攝,然後4個月後有資格參加步槍拍攝。我想顯示每個官員的所有日期,不管分數如何,都輸入分數。MS Access - 如何顯示日期人員參加技能測試

我的查詢的字段有:

OfficerID, TestDate, DayScore, NightScore, RifleScore 

我試圖讓它得到這樣的結果:

JohnDoe123, 03/15/2010, 03/15/2010, 10/04/2010 

FJacobs123, 02/01/2010, 04/27/2010, 11/11/2010 

我基本上取代比分資格的日期。它似乎應該很簡單,但我卡住了。請幫忙。

謝謝。

回答

0

您需要一個連接值的函數。見Microsoft Access condense multiple lines in a table

您的查詢,然後將類似:

Select OfficerId 
    , GetList("Select Format(CertificateDate, 'm/d/yyyy') 
        From OfficerCertificates As O1 
        Where O1.OfficerID = " & Officers.ID & " 
        Order By CertificateDate") As CertificateDates 
From Officers 
0

另一種方式來解決這個問題是建立一個報告表,你去,你可以填補行,而不是功能來構建飛行結果。

對我來說,選擇歸結爲您運行查詢的頻率以及數據更改的頻率。

如果您每月只運行一次或某事,或者數據經常更改,請使用特殊查詢。

如果您經常顯示結果,並且數據不會經常更改,您可以真正從報告表中獲益。

0

也許不是剛好你想要什麼,但看看CrossTab查詢。這可以將單個列中的所有值拉到一起,並將它們顯示爲與其相關聯的記錄一致的各自的字段。你最終得到的是一個名稱和日期矩陣,如果在該日期進行了測試,那麼你的查詢可以在該日期字段中輸入「Y」。這也會垂直對齊在同一天進行測試的官員。

Officer Name | 02/01/2010 | 03/15/2010 | 03/15/2010 | 04/27/2010 | 10/04/2010 | 11/11/2010 
JohnDoe123 |   |  Y  |  Y  |   |  Y  | 
FJacobs123 |  Y  |   |   |  Y  |   |  Y