我在MS Access 2013中有两个表。
有一些条件:
- 部分只能在维修后撤回。
- 一段时间后,部分将再次返回维修。
- 部分可以在同一天进行维修,撤回,退回,维修,撤回,退回。
醇>
(ID是主键)
ID PART_ID SERVICE_DATE 1 A0001 01/05/2014 2 A0002 02/05/2014 3 A0003 03/05/2014 4 A0004 04/05/2014 5 A0005 05/05/2014 6 A0001 06/05/2014 7 A0002 07/05/2014
(ID是主键)
ID PART_ID DRAW_DATE 1 A0001 02/05/2014 2 A0002 03/05/2014 3 A0003 04/05/2014 4 A0001 07/05/2014 5 A0002 08/05/2014
我使用以下代码更新了提取表中的 SERVICE_ID :
UPDATE WITHDRAW SET SERVICE_ID = DLookup("ID","SERVICE","PART_ID ='" & PART_ID & "' AND SERVICE_DATE =#" & DMax("SERVICE_DATE","SERVICE","PART_ID ='" & PART_ID & "' AND SERVICE_DATE <=#" & DRAW_DATE & "#") & "#");
在 Gord Thompson 的帮助下,其中 SERVICE_ID 是服务 ID >
如果提款日期至少比服务日期晚>>,则效果很好,如下所示:
服务表:
ID PART_ID SERVICE_DATE 1 A0001 01/05/2014 2 A0002 02/05/2014 3 A0003 03/05/2014 4 A0004 04/05/2014 5 A0005 05/05/2014 6 A0001 06/05/2014 7 A0002 07/05/2014
提款表:
ID PART_ID DRAW_DATE SERVICE_ID 1 A0001 02/05/2014 1 2 A0002 03/05/2014 2 3 A0003 04/05/2014 3 4 A0001 07/05/2014 6 5 A0002 08/05/2014 7
但是,当该日期类似时,它无法正确捕获 SERVICE_ID 。
服务表:
ID PART_ID SERVICE_DATE 1 A0001 01/05/2014 2 A0002 01/05/2014 3 A0003 01/05/2014 4 A0004 01/05/2014 5 A0005 01/05/2014 6 A0001 01/05/2014 7 A0002 01/05/2014
提款表:
ID PART_ID DRAW_DATE SERVICE_ID 1 A0001 01/05/2014 1 2 A0002 01/05/2014 2 3 A0003 01/05/2014 3 4 A0001 01/05/2014 1 (problem) 5 A0002 01/05/2014 2 (problem)
服务表:
ID PART_ID SERVICE_DATE 1 A0001 01/05/2014 2 A0002 01/05/2014 3 A0003 01/05/2014 4 A0004 01/05/2014 5 A0005 01/05/2014 6 A0001 20/05/2014 7 A0002 25/05/2014
提款表:
ID PART_ID DRAW_DATE SERVICE_ID 1 A0001 20/05/2014 6 (problem) 2 A0002 23/05/2014 2 3 A0003 24/05/2014 3 4 A0001 20/09/2014 6 5 A0002 08/05/2015 7
我对SQL知之甚少。我不知道我必须添加什么条件才能得到我想要的结果。有人可以帮忙吗?谢谢!