在MS Access中,我建立了一个查询,乍看之下它看起来完全符合我的要求,直到尝试应用过滤器为止。我是在“设计”视图中构建的,但是SQL语句是:
SELECT tblTestCableDesign.ConnectorRefDes,
tblTestCableDesign.ConnectorPN,
DLookUp("[Type]","tblMMshells","[Code] = '" & LEFT([ConnectorPN],7) & "'") AS ShellType
FROM (
tblTestCablePNs
INNER
JOIN tblTestCables
ON tblTestCablePNs.[P/N] = tblTestCables.[P/N])
INNER
JOIN tblTestCableDesign
ON tblTestCablePNs.[P/N] = tblTestCableDesign.[CablePN]
WHERE (((LEFT([ConnectorPN],4)) LIKE "80#-"));
当我尝试对计算所得的字段ShellType进行过滤时,出现错误:
查询表达式'[Code] =''805-00''中的语法错误(缺少运算符)
同样,查询运行时我没有收到任何错误或#VALUES,每条记录在查找表中都有正确的值。我注意到了几件事:
给定的表达式中没有语法错误(“ {[1}}返回null。”是正确的。我确认这是我摆脱{ {1}}调用并将字符串直接输入DlookUp
“ 805-00”仅是六个字符,而不是LEFT
要求的7个字符
我还有另一个几乎相同的查询,运行得很好,尽管Where条件和P / N解析不同。
在我修改主表上的记录之前,这一直很好(至少在本部分中如此)。我所做的只是更改了ConnectorPN,因此它不会显示在此查询中。
我在这里茫然……任何方向都将不胜感激。
答案 0 :(得分:0)
由于SunKnight0,我意识到表中的记录中有一个'
。因此Left
实际上返回了字符串'805-00
。但是,我不知道为什么这只会在过滤时引起问题,而不是在查询最初运行时引起问题。