我有一个有一堆轮班的场地,其中SH1是从早上6点到下午2点,SH2是从下午2点到晚上10点,而SH3是从晚上10点到早上6点。我只需要根据当前时间返回当前班次。
我尝试过的事情:
Switch(
[Uf_Shift_Standard]=8,
(Switch(
(Time() >= #6 am# AND Time() < #2 pm#), "SH1",
(Time() >= #2 pm# AND Time() < #10 pm#), "SH2",
True, "SH3")
),
[Uf_Shift_Standard]=10,
(Switch(
(Time() >= #5 am# AND Time() < #3 pm#), "SH1",
True, "SH2")),
[Uf_Shift_Standard]=12,
(Switch(
(Time() >= #3 am# AND Time() < #3 pm#), "SH1",
True, "SH2")),
1=1,
(Switch(
(Time() >= #6 am# AND Time() < #2 pm#), "SH1",
(Time() >= #2 pm# AND Time() < #10 pm#), "SH2",
True, "SH3"))
)
注意:我已经更新了我的代码,以便考虑我们拥有的3种不同类型的班次 - 8,10和12小时班次。但是,我没有收到错误:You tried to execute a query that does not include the specified expression 'tableA.job="something" And tableB.suffix="12" And tableB.shift=Switch([Uf_Shift_Standard]=8,Switch...[the rest of the long expression continues here...]
'tableA.job="something" And tableB.suffix="12"
部分处理移位列之前有其自身标准的其他2列。
答案 0 :(得分:1)
可以使用单行代码完成:
Shift = "SH" & 1 + DatePart("h", DateAdd("h", -6, Time())) \ 8
在GUI设计器中:
Shift: "SH" & 1+DatePart("h",DateAdd("h",-6,Time()))\8