【发布时间】:2016-02-06 21:36:01
【问题描述】:
一张图片胜过一千个字,所以我先向你展示我要完成的工作:
这是一份代表 9 月份时间表的报告。
数据来自三个表:Employees、Employees_Shifts 和 Shifts。
报告的 RecordSource 属性使用以下查询来获取名称:
SELECT DISTINCT
Employees.Employee_ID, Employees.Last_Name, Employees.First_Name
FROM
Shifts
INNER JOIN
(Employees
INNER JOIN
Employees_Shifts ON Employees.Employee_ID = Employees_Shifts.Employee_ID)
ON Shifts.Shift_ID = Employees_Shifts.Shift_ID
WHERE
(((Shifts.Schedule_ID) = 1))
ORDER BY
Employees.Last_Name;
所以现在我正处于一个非常棘手的部分,我需要用适当的数据填充所有文本框。每个文本框应该包含一个字母:A、B、C、D 等。
每一个都是分配给任何给定 Shift 的字母“名称”。您可以同时进行多个班次,但地点不同。仅供参考,请注意标题中的“第 1 部分”。我打算制作第二份报告,更详细地了解每个班次,您可以在其中查找任何一天的字母名称。但这与这个特定问题无关。
我需要在数据库中查询 Shifts 表中的“名称”字段,以便将所有字母:A、B、C、D 等分配到相应的框中。
例如,此类查询的输出可能如下所示:
Allen Nelli 3A,7B,10A,13A,14B,17B,19C,21A
Barlow_Steeves Donna 1A,3B,7A,13B,18A,23A,25A
Beno Wayne 1B,7B,8A,10A,14B,15C
数字/字母组合将代表日期和名称,以便我可以以某种方式将正确的字母分配到适当的文本框中。 我什至不知道这是否完全可以使用 SQL。我尝试修改这个查询:
SELECT distinct
Employees.Employee_ID, Employees.Last_Name, Employees.First_Name,
Day(Shifts.Start_Date_Time) & Shifts.Designation AS Expr1
FROM
Shifts
INNER JOIN
(Employees
INNER JOIN
Employees_Shifts ON Employees.Employee_ID = Employees_Shifts.Employee_ID)
ON Shifts.Shift_ID = Employees_Shifts.Shift_ID
WHERE
(((Shifts.Schedule_ID) = 1));
但是,这给了我以下输出:
8 Allen Nelli 10A
8 Allen Nelli 13A
8 Allen Nelli 14B
etc.
我不希望每个员工都像这样多次出现在报告中。这就是我在原始查询中使用 DISTINCT 运算符的原因。
肯定有一种方法可以查询此数据库,以便我可以使用其 ControlSource 属性在每个文本框中分配适当的字母?或者甚至只是做一个单独的查询并使用 vba 代码将字母分配给每个文本框的 Value 属性?
任何帮助/指导将不胜感激。
【问题讨论】:
标签: sql vba report ms-access-2010