2015-05-19 126 views
0

我有两个表:MS访问SQL查询结果

rapprovals_tbl 

rId rAssignment rState rApprover rapprovaldt rType rNotes 
    12345678      
1 12345679 Paid 12345678 31/05/2015 18:23 Flex  
5 12345679 Approved 12345678 14/05/2015 18:23 Normal 
6 12345679 Pending   Normal 

timerecord_tbl 

RowID Assignment1 wMonth StartTime EndTime  
1 12345679 Mar-15 17/03/2015 11:29 18/03/2015 16:12 Flex  
5 12345679 Mar-15 17/03/2015 11:00 17/03/2015 12:00 Normal 
6 12345679 Mar-15 17/03/2015 11:50 18/03/2015 16:11 Normal 

我有形式两个组合框,这两篇文章,这源工作; 框1 -

Select [staffid] FROM [control_tbl] WHERE [supervisorid] = '12345678' 

专栏2

SELECT timerecord_tbl.[RowID] 
FROM timerecord_tbl 
INNER JOIN rapprovals_tbl ON timerecord_tbl.RowID = rapprovals_tbl.rId 
WHERE (((timerecord_tbl.[Assignment1])='" & Box 1 & "' 
    AND (rapprovals_tbl.[rState] is null) Or (rapprovals_tbl.[rState] = 'Pending'))); 

我想只有那些以箱1个员工记录专栏2

我如何去了解这个相关的RowID,目前其列出了所有行ID。

我将不胜感激任何帮助。

+0

你有'和'和'或'混合而不使用'()'来执行执行顺序。你可能想'AND((...)OR(...))'。注意额外的'()'。 –

回答

0

试着改变你的SQL的框2,像这样:

SELECT timerecord_tbl.[RowID] 
FROM timerecord_tbl 
INNER JOIN rapprovals_tbl ON timerecord_tbl.RowID = rapprovals_tbl.rId 
WHERE (timerecord_tbl.[Assignment1]='" & Box 1 & "') 
    AND ((rapprovals_tbl.[rState] is null) Or (rapprovals_tbl.[rState] = 'Pending'))); 

我觉得@MarcB在说同样的事情。您的“OR”语句被应用于整个WHERE子句,而不仅仅是另一个rState过滤器。更改括号将正确分离并修复它。

+0

这太好了,解决了我的问题,非常感谢你们俩。 – aamir