现在我想知道如何根据Access 2013中的现有查询轻松检索某些特定值,检索到的信息将用于报告中。
我有一个查询,可以检索一个人在特定日期,项目和公司工作时所做的所有时间(1家公司有2家内部公司)。现有查询将这些字段分组。
结果集返回以下格式:
我想要实现的是在特定日期范围内1个特定项目编号上的1个人总小时数。 例如,我想要在项目1000的日期27-8和29-8之间按人员x计算的总工时(公司不重要)。结果如下: 项目编号:1000,日期范围:27-8 / 29-8,人:x,工时:6。
有没有办法实现这个目标?也许在报告本身中结合功能,或者也可以做到这一点过滤和求和'只在查询中?我尝试了几种不同的分组方式,总结等等,但我现在已经被困了。
现有查询如下所示:
SELECT bookings.projectnumber,
bookings.personid,
persons.personname,
bookings.date,
bookings.madehours,
projects.projectcompany
FROM (bookings
LEFT JOIN projects ON projects.projectnumber = bookings.projectnumber)
LEFT JOIN persons ON persons.personid = bookings.personid
GROUP BY bookings.personid,
bookings.date,
bookings.projectnumber,
projects.projectcompany,
persons.personname,
bookings.madehours
编辑添加:
返回的结果将显示在报告中,其中数据按人员分组。在发布报告时,只会将日期范围作为参数给出。 因此,对于上面的示例(日期范围27-8 / 29-8),它应该在报告中如下:
-----Person x------
Project: 1000 Made Hours: 6
Project: 2000 Made Hours: 4
-----Person y------
Project: 1000 Made Hours: 4
Project: 3000 Made Hours: 9
答案 0 :(得分:1)
如果您的最终目标只是显示结果,那么您只需在Access中生成报告即可。 Access 2010并进一步提供本机工具,以便对查询结果进行排序和分组。
所以如果你想要这个结果:
-----Person x------
Project: 1000 Made Hours: 6
Project: 2000 Made Hours: 4
-----Person y------
Project: 1000 Made Hours: 4
Project: 3000 Made Hours: 9
然后创建链接到查询的报告。在Details
部分添加Project Number
和Booked hours
,然后在顶部菜单中选择工具Group and sort
,在By Person
上创建一个组,并在其中添加字段控制器小组标题。
要过滤日期范围内的报告,您所要做的就是将用于日期的控件作为条件链接。只需使用WHERE OnDate BETWEEN [startDateControlName] AND [endDateControlName]
答案 1 :(得分:0)
SELECT Bookings.ProjectNumber, [From], [To], Bookings.PersonID, Persons.PersonName, sum(Bookings.MadeHours) as Hours
FROM (Bookings LEFT JOIN Projects ON Projects.ProjectNumber = Bookings.ProjectNumber) LEFT JOIN Persons ON Persons.PersonID = Bookings.PersonID
GROUP BY [From], [To], Bookings.PersonID, Bookings.ProjectNumber, Persons.PersonName
WHERE Booking.Date>=[From] and Booking.Date<=[To]
这使用日期范围的参数,如有必要,您可以为人员和项目添加其他参数。