2015-11-05 128 views
1

一张图片胜过千言万语,所以我会告诉你我想要先完成:如何将多个记录数据连接成一条记录?

enter image description here

这是较九月份的计划的报告。

数据从三个表中获得:雇员,雇员转移和转移。

报表的记录来源属性使用以下查询来获取相应的名称:

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部分”。我打算在第二次报告中详细介绍每个班次,您可以在任何给定日期查找字母标识。但这与这个特殊问题无关。

我需要以某种方式查询"指定"领域的数据库中的表班次,这样我可以分配所有的字母: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属性?

任何援助/方向,将不胜感激。

回答

0

我认为创建一个基于employeeid的转移名称聚合的子查询对您有好处。使用employee表对此子查询执行内部连接。汇总指定名称后,您可以简单地使用汇总指定而不是“Shifts.Designation”。你可能还需要做一个小组。

+0

我对子查询没有任何经验,但尝试了以下子查询:SELECT Day(Shifts.Start_Date_Time)&Shifts.Designation&“,”AS Expr1 FROM SHIFT INNER JOIN(Employees INNER JOIN Employees_Shifts ON Employees .Employee_ID = Employees_Shifts.Employee_ID)ON Shifts。Shift_ID = Employees_Shifts.Shift_ID;不过,我似乎无法制作一个具有多个级联名称的唱片节目。我想我需要一些关于子查询的帮助。预期可能的产出:1B,7B,8A,10A,14B,15C – Alan

+0

我在这个网站上找到了我的问题的答案:http://allenbrowne.com/func-concat.html – Alan