MS Access - 如何显示日期人员参加技能测试
问题描述:
我有一个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
我基本上取代比分资格的日期。它似乎应该很简单,但我卡住了。请帮忙。
谢谢。
答
您需要一个连接值的函数。见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
答
另一种方式来解决这个问题是建立一个报告表,你去,你可以填补行,而不是功能来构建飞行结果。
对我来说,选择归结为您运行查询的频率以及数据更改的频率。
如果您每月只运行一次或某事,或者数据经常更改,请使用特殊查询。
如果您经常显示结果,并且数据不会经常更改,您可以真正从报告表中获益。
答
也许不是刚好你想要什么,但看看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